我正在寻找写入到外部Web服务的代码的单元测试的最佳方法。 POST请求的主体是一个XML文档,它描述了Web服务要执行的操作和数据。如何在Ruby/Rails中测试发送到Web服务的XML
现在,我已经将webservice包装在它自己的类中(类似于ActiveResource),并且我看不到任何方式来测试由该类生成的确切XML,而无需通过暴露某些内部XML来破坏封装生成作为公共方法的类。这似乎是一种代码异味 - 从类的用户的角度来看,他们不应该知道也不关心类是如何实际实现Web服务调用的,无论是XML,JSON还是信鸽。
对于类的例子:
class Resource
def new
#initialize the class
end
def save!
Http.post("http://webservice.com", self.to_xml)
end
private
def to_xml
# returns an XML representation of self
end
end
我希望能够测试产生,以确保它符合什么网络服务规格期待的XML。那么我可以最好的做到这一点,而不需要to_xml公共方法?
您可以使用send来调用Ruby 1.8中的私有方法,但不能使用1.9。这仍然是一个破解 - 我想测试接口(Ruby的一个,和Web服务之一),而不是它们的内部实现 - 如果我改变了如何在类中生成我的XML,我不应该改变我的测试。 – 2010-06-03 03:44:29