我有一个简单的测试,它似乎有不同的行为取决于我是否使用明确的主题。
context "successful validation" do
subject(:invitation) {invitations(:emmet_invite)}
after do
invitation.send_voucher
end
it "calls hotel_booked?" do
invitation.should_receive(:hotel_booked?).and_return(true) #works
end
it {should_receive(:hotel_booked?).and_return(true)} #fails
end
这里有什么问题?
答案 0 :(得分:1)
在rspec-mocks中查看此github问题:https://github.com/rspec/rspec-mocks/issues/148
引用:
添加隐含主题以支持一线预期,但我不相信它曾用于模拟期望。对于模拟期望有任何意义,在设置之后,示例中必须有一些代码,因此使用一个衬里并没有意义。
基本上,你不能将should_receive
与隐含主题一起使用。
答案 1 :(得分:0)
您可以使用subject
来获取隐含的主题:
it { subject.should_receive(:hotel_booked?).and_return(true) }
虽然这不像你的显式例子那么容易阅读。