5
我有一些Ruby代碼看起來像這樣:RSpec的 - 使用測試雙象塊參數
Something.create do |x|
x.foo = bar
end
我想寫它採用了雙到位塊自變量x的測試,從而使然後我可以撥打:
x_double.should_receive(:foo).with("whatever").
這可能嗎?
我有一些Ruby代碼看起來像這樣:RSpec的 - 使用測試雙象塊參數
Something.create do |x|
x.foo = bar
end
我想寫它採用了雙到位塊自變量x的測試,從而使然後我可以撥打:
x_double.should_receive(:foo).with("whatever").
這可能嗎?
specify 'something' do
x = double
x.should_receive(:foo=).with("whatever")
Something.should_receive(:create).and_yield(x)
# call the relevant method
end
非常好!謝謝 – stubotnik
這是一個很好的答案,但我想挑剔。 'Something.should_receive(:create)'是一個測試 - 一個斷言 - 但它並沒有斷言stubotnik說他想測試的行爲。所以我會使用'Something.stub(:create).and_return(x)'來區分測試設置和被測試的行爲,它不會斷言任何關於'Something.create'的行爲 –