2011-09-09 71 views

回答

37

mockstub都是更一般的double的別名。像contextdescribe,它們可以互換使用,使規格的意圖更清晰。這在The RSpec Book中有更詳細的描述。

+4

而且文檔推薦使用'double'了'mock'和'stub': 您還可以使用模擬和存根方法來創建測試雙打,但這些方法都存在只向後兼容性,並很可能會已棄用,然後從未來版本中刪除(https://www.relishapp.com/rspec/rspec-mocks/) – welldan97

+1

更新版本的rspec甚至會生成類似'DEPRECATION:stub「的警告。使用double來代替。 '。 – amoebe

2

似乎只是aliases因爲:__declared_as似乎並沒有被用於消息。

1

雙打

當我們依賴於用不確定的特徵成分,我們可能會發現,文件受到損壞,磁盤發生故障時,網絡超時,並且服務器發生故障運行規範的中間。因爲這些是我們無法控制的事情,所以當我們運行我們的規格時,它們會導致不一致和令人驚訝的結果。雙打可以斷開我們的例子與這些依賴關係的實際實現。

殘段

當系統行爲基於一個序列。一個存根是完美的。因爲每個例子都可以指定一個不同的序列。例如: - 在隨機發生器的情況下,它顯然是非確定性的來源。我們想用穩定的序列來替換真正的隨機發生器。

嘲笑

一段時間,我們需要從可能尚不存在另一個對象的一些服務。在這種情況下,我們可以引入模擬對象。我們可以將其編程爲我們當前所期望的對象。所以當我們專注於交互時,模擬對象使得它更容易實現。

相關問題