2016-05-30 117 views
0

我對我的Ruby代碼運行了一些測試,但我測試的方法在負責發送推送通知的外部庫中調用了一個函數。我希望它所做的調用是'僞造'的,所以它們實際上不會被調用。如果他們能夠回覆標準回覆,或者回復標準回覆,這也會很有幫助。有沒有辦法做到這一點?我可以在Ruby測試中僞造調用方法嗎?

+0

請添加一些示例代碼。 –

+4

您正在尋找[模擬對象](https://en.wikipedia.org/wiki/Mock_object)。 Ruby中有很多可能性:rspec-mocks,rr,mocha,可能還有其他很多。 – floum

回答

3

當然你可以在Ruby測試中僞造調用方法。你正在尋找的是創建所謂的模擬代碼。完全可以從這樣的模擬代碼中返回任何你想要的東西。

您可以在Ruby中創建一個標識符另一個陰影 - 例如,您可以創建自己的函數來映射庫中已存在的函數。

谷歌對於上面寫的項目加粗或者詢問更具體的問題,如果需要的話。

0

VCR gem可以非常容易地保存測試套件的HTTP交互並確定性地運行它們。這將是我建議的方法。

正如其他人指出的那樣,您也可以對您調用的方法進行存根並手動指定其響應。如果您使用的是rspec,則這意味着要在測試中的HTTP調用上方添加一行。沿着線的東西:

allow(Pusher).to receive(:message).and_return("An object of your liking")

相關問題