1

我是 RSpec 的新手,所以请耐心等待。我有一个带有订单的对象,我正在对该对象存根方法。我在该对象上调用另一个方法,然后调用我正在存根的方法(并且该存根似乎正在工作,因为我在所述方法调用周围放置了调试器并正确返回。另外,我在实际方法中投入了一个调试器调用;那没有被击中,所以它似乎是存根好了)。

但是当我打电话给@order.should_receive 时,我得到“预期的:blah_method with (any args) 一次,但收到了 0 次。”

我不确定为什么 should_receive 不起作用,也不确定我做错了什么。有什么帮助吗?顺便说一句,我在 RSpec 1.3.2 上。

 it 'should be called when blah blah blah' do
  @order.stub!(:blah_method).and_return true
  #import_foobar_order calls @order.blah_method
  #order_hash is irrelevant here, just a json obj converted to a hash
  @order.import_foobar_order(@order, order_hash, website)
  @order.should_receive(:blah_method).at_least(:once)
end
4

2 回答 2

2

should_receive 在调用之前进行,如果您使用 should_receive 则不需要存根(您可以在此处存根)

it 'should be called when blah blah blah' do
  @order.should_receive(:blah_method).at_least(:once).and_return(true)
  @order.import_foobar_order(@order, order_hash, website)
end
于 2013-11-14T15:56:25.773 回答
1

should_receive 几乎充当存根。在执行方法之前设置它。因此,为了使测试正常工作,您将执行此操作。

it 'should be called when blah blah blah' do
  @order.should_receive(:blah_method).at_least(:once).and_return(true)
  @order.import_foobar_order(@order, order_hash, website)
end
于 2013-11-14T16:00:36.700 回答