2012-01-11 55 views
1

任何人都知道一種方法來縮短這一行? (RSpec的2)在一行中定義stub/mock expectation/should_receive?

location = mock 
location.should_receive(:build) 

例如,可以定義以下內容:

location = stub 
location.stub(build: true) 

上面相同:

location = stub(build :true) 

因此,任何人看到的方式來指定模擬電話的期望?

回答

4

location = mock.tap { |loc| loc.should_receive(:build) }

+0

喜歡這個。讚美你,好的先生。如果還有其他解決方案,我們將再開放幾個小時,但這樣可以完成工作。 – 2012-01-11 20:05:33

+0

@zetetic,謝謝,不知道:) – 2012-01-11 20:09:51

1

長相醜陋,但是作品:

(location = mock).should_receive(:build) 
+0

有趣,沒想到辦法的。 – 2012-01-11 20:00:56

1

如果每次測試模擬了定義,您可以通過使用縮短符號讓在文件的開頭。

let (:location) { double :location } 

然後,當你使用location每一次,它會自動創建新的模擬對象:

location.should_receive(:build) 
+0

對,在過去使用類似的方法,並且當你想要在整個上下文中使用相同的模擬時效果很好。 – 2012-01-11 20:02:07

+0

據我所知,它應該爲每個範圍創建新的模擬對象。它可能很方便。 – megas 2012-01-11 20:09:24

+0

'location'將會爲每個例子再次實例化。這可能是最好的使用方法,特別是如果你需要在一些例子中設定期望值而不是在其他例子中。 – zetetic 2012-01-12 02:14:10

相關問題