首页 > 解决方案 > Ruby Rspec should_not_receive 不工作

问题描述

对于下面的代码片段:

@by_hidden.should_not_receive(:by_limit).with(100).and_return(@by_limit)

我面临错误

@by_hidden.should_not_receive(:by_limit).with(100).and_return(@by_limit)
       (Double Object).by_limit(100)
           expected: 1 time with arguments: (100)
           received: 0 times with arguments: (100)

任何有关这方面的信息将不胜感激。

标签: ruby-on-railsrubyruby-on-rails-3rspecrspec-rails

解决方案


像这样写:

expect(@by_hidden).not_to receive(:by_limit).with(100)

或者也许(取决于您的用例)甚至只是:

expect(@by_hidden).not_to receive(:by_limit)

  1. 如果您希望不调用该方法,那么存根返回值是没有意义的。
  2. 几年来,语法expect(...).to一直优于should/ 。should_not对于某些类型的对象,后一种方法可能会出现问题,因此最好避免。

推荐阅读