【问题标题】:How to not execute a stubbed method in RSpec如何在 RSpec 中不执行存根方法
【发布时间】:2015-08-30 10:28:47
【问题描述】:

我正在测试控制器调用它包含的模块中的某个方法。我不希望该方法实际执行,只是为了验证它是否被调用。我现在拥有的是:

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 不执行?

【问题讨论】:

  • 代码看起来正确。如果它没有按预期工作,你能说明你是如何设置subject的吗?

标签: ruby-on-rails rspec


【解决方案1】:

有没有办法确保 create_show_and_tickets 不执行?

你已经通过调用做到了这一点

expect(subject).to receive(:create_show_and_tickets)

... 在帖子之前。 allow 会产生同样的效果。在任何一种情况下,底层代码都会被您的模拟或存根替换,并且不会被调用。

您可以在create_show_and_tickets 中添加调试语句来确认这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多