如何在 RSpec 中不执行存根方法
How to not execute a stubbed method in RSpec
我正在测试控制器调用它包含的模块中的特定方法。我不希望该方法实际执行,只是为了验证它是否被调用。我现在拥有的是:
it 'calls create_show_and_tickets' do
sign_in create :admin
expect(subject).to receive(:create_show_and_tickets)
post :create, show: valid_attributes
end
在测试中我没有输入正确的参数,所以当我试图遍历一个不存在的对象时会抛出错误。有没有办法确保 create_show_and_tickets
不执行?
Is there a way to make sure that create_show_and_tickets does not execute?
您已通过调用
完成了此操作
expect(subject).to receive(:create_show_and_tickets)
... 在 post 之前。 allow
会产生同样的效果。在任何一种情况下,底层代码都会被您的模拟或存根替换,并且不会被调用。
您可以在 create_show_and_tickets
中放入调试语句来确认这一点。
我正在测试控制器调用它包含的模块中的特定方法。我不希望该方法实际执行,只是为了验证它是否被调用。我现在拥有的是:
it 'calls create_show_and_tickets' do
sign_in create :admin
expect(subject).to receive(:create_show_and_tickets)
post :create, show: valid_attributes
end
在测试中我没有输入正确的参数,所以当我试图遍历一个不存在的对象时会抛出错误。有没有办法确保 create_show_and_tickets
不执行?
Is there a way to make sure that create_show_and_tickets does not execute?
您已通过调用
完成了此操作expect(subject).to receive(:create_show_and_tickets)
... 在 post 之前。 allow
会产生同样的效果。在任何一种情况下,底层代码都会被您的模拟或存根替换,并且不会被调用。
您可以在 create_show_and_tickets
中放入调试语句来确认这一点。