【发布时间】:2012-09-28 22:20:10
【问题描述】:
我有一些像这样的 Ruby 代码:
Something.create do |x|
x.foo = bar
end
我想编写一个测试,它使用双精度来代替块参数 x,这样我就可以调用:
x_double.should_receive(:foo).with("whatever").
这可能吗?
【问题讨论】:
我有一些像这样的 Ruby 代码:
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
【讨论】:
Something.should_receive(:create) 是一个测试 - 一个断言 - 但它并没有断言 stubotnik 说他想测试的行为。因此,我将使用Something.stub(:create).and_return(x) 将测试设置与被测行为区分开来,它不会断言任何关于Something.create 行为的内容