Ruby RSpec-使用test double作为块参数
我有一些Ruby代码,如下所示:Ruby RSpec-使用test double作为块参数,ruby,rspec,Ruby,Rspec,我有一些Ruby代码,如下所示: Something.create do |x| x.foo = bar end 我想写一个测试,它使用一个double来代替块参数x,这样我就可以调用: x_double.should_receive(:foo).with("whatever"). 这可能吗?这是一个很好的答案,但我想挑剔一下某物。应该接收(:创建)是一个测试-一个断言-但它并没有断言stubotnik说他想要测试的行为。因此,我将通过使用Something.stub(:creat
Something.create do |x|
x.foo = bar
end
我想写一个测试,它使用一个double来代替块参数x,这样我就可以调用:
x_double.should_receive(:foo).with("whatever").
这可能吗?这是一个很好的答案,但我想挑剔一下<代码>某物。应该接收(:创建)是一个测试-一个断言-但它并没有断言stubotnik说他想要测试的行为。因此,我将通过使用
Something.stub(:create.)和_return(x)
来区分测试设置和被测行为,它不会断言Something.create的任何行为
specify 'something' do
x = double
x.should_receive(:foo=).with("whatever")
Something.should_receive(:create).and_yield(x)
# call the relevant method
end