【问题标题】:RSpec - use test double as block argumentRSpec - 使用测试双作为块参数
【发布时间】:2012-09-28 22:20:10
【问题描述】:

我有一些像这样的 Ruby 代码:

Something.create do |x|
    x.foo = bar
end 

我想编写一个测试,它使用双精度来代替块参数 x,这样我就可以调用:

x_double.should_receive(:foo).with("whatever").

这可能吗?

【问题讨论】:

    标签: ruby rspec


    【解决方案1】:
     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 行为的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多