Ruby RSpec-使用test double作为块参数

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

我有一些Ruby代码,如下所示:

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