我正在尋找寫入到外部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