我无法理解为什么以下代码在运行测试时无法在rspec中运行。
Lead.update_status(2,2,true)
expect(Lead).to receive(:update_status).with(2, 2, true)
我也试过
Lead.update_status(2,2,true)
expect_any_instance_of(Lead).to receive(:update_status).with(2, 2, true)
我得到的错误是
(<Lead(id: integer, contact_id: integer, course_presentation_id: integer, status: integer, created_by_user_id: integer, updated_by_user_id: integer, created_at: datetime, updated_at: datetime, mailchimp_status: integer) (class)>).update_status(2, 2, true)
expected: 1 time with arguments: (2, 2, true)
received: 0 times with arguments: (2, 2, true)
请注意,如果我添加了放置&#34; test&#34;在我的代码中打印出来,所以我知道update_status实际上正在工作。
有什么想法吗?感谢。
答案 0 :(得分:15)
您应该将期望放在您希望调用该方法的代码之前:
expect(Lead).to receive(:update_status).with(2, 2, true)
Lead.update_status(2,2,true)