3

我正在尝试对模拟的 ActiveRecord 模型设定期望。我创建了以下示例,它应该根据我能找到的文档传递。

it "should pass given the correct expectations" do
  payment = mock_model(Payment)
  payment.should_receive(:membership_id).with(12)
  payment.membership_id = 12
end

它失败并出现错误“......模拟'Payment_1004'收到意外消息:membership_id = with (12)”

我意识到我正在测试模拟框架,我只是想了解如何设置期望。

4

2 回答 2

10

您正在对错误的方法名称设置期望 -:membership_id是“getter”,:membership_id=是“setter”。正确的行是:

payment.should_receive(:membership_id=).with(12)
于 2009-07-14T18:06:12.790 回答
1

另一个有用的“out”——如果你不关心 id 键——是做如下的事情:

mock_model(Payment,:[]= => nil, :save=> nil)

...或者也许只是

mock_model(Payment,:[]= => nil)

里尔

于 2010-10-04T14:26:03.767 回答