Ruby on rails Ruby Rspec应\u not \u receive not working

Ruby on rails Ruby Rspec应\u not \u receive not working,ruby-on-rails,ruby,ruby-on-rails-3,rspec,rspec-rails,Ruby On Rails,Ruby,Ruby On Rails 3,Rspec,Rspec Rails,对于以下代码段: @by\u隐藏。不应接收(:by\u限制)。带有(100)。和返回(@by\u限制) 我面临的是错误 @by\u隐藏。不应接收(:by\u限制)。带有(100)。和返回(@by\u限制) (双对象)。按限制(100) 预期:1次,带参数:(100) 收到:0次,参数为:(100) 对此,我们将不胜感激 这样写: expect(@by_hidden).not_to receive(:by_limit).with(100) 或者(取决于您的用例),甚至只是: expect(@

对于以下代码段:

@by\u隐藏。不应接收(:by\u限制)。带有(100)。和返回(@by\u限制)
我面临的是错误

@by\u隐藏。不应接收(:by\u限制)。带有(100)。和返回(@by\u限制)
(双对象)。按限制(100)
预期:1次,带参数:(100)
收到:0次,参数为:(100)
对此,我们将不胜感激

这样写:

expect(@by_hidden).not_to receive(:by_limit).with(100)
或者(取决于您的用例),甚至只是:

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

  • 如果希望不调用该方法,那么存根一个返回值是没有意义的
  • 几年来,
    expect(…).to
    语法一直比
    should
    /
    should\u not
    更受欢迎。后一种方法对于某些类型的对象可能有问题,因此最好避免使用

  • should\u receive
    已弃用,请使用
    expect(…)。not\u receive(…)
    。另外,如果不希望调用该方法,为什么要设置返回值?那
    和_return
    没有任何意义。此外,如果可能的话,请在所有问题中提供答案。在这个例子中,一个可能是:一个完整的规范和一个基本的方法实现,任何其他人都可以运行它来获得与您向我们展示的相同的错误。这只需要大约5-10行代码。您应该使用@arieljuod提到的语法。2.你打电话了吗?如果您使用的是
    expect(…).not_to receive(…)
    ,则需要在调用之后进行调用,从而在调用之前编写expect:
    expect(…).not_to receive(…);打电话
    如果你想得到一个“给定的,何时,然后”的方法,你需要使用
    期望(…)。不要收到(…)
    如图所示谢谢你的建议谢谢你的建议