@sponge = Factory(:user)
let(:event_type) { EventType.where( name: 'visit_site').first
ONE: =>运行测试时为false
subject{ Event.new user: @sponge, event_type: event_type, points_earned: event_type.points_value, description: {}}
context 'call #update_user_points when create a event' do
it{should_receive(:update_user_points)}
end
TWO: =>运行测试时为true
it 'should call update_user_points after creation' do
event = Event.new user: @sponge, event_type: event_type, points_earned:event_type.points_value, description: {}
event.should_receive(:update_user_points)
event.save
end
请给我一些建议:D
答案 0 :(得分:0)
您的第二个示例与您的第一个示例不同:它们都为Event#update_user_points
设置了消息预期,但在此之后第二个调用save
;第一个没有。
我认为您不能将should_receive
与隐式主题一起使用,正如您在第一个示例中尝试的那样。 rspec似乎没有抱怨,但我不认为它会做你想要的。按顺序执行:
update_user_points
方法。它失败了,因为从未收到过该消息。