【问题标题】:How to remove "DEPRECATION: stub! is deprecated. Use stub instead." message?如何删除“弃用:存根!已弃用。请改用存根。”信息?
【发布时间】:2014-04-17 20:33:20
【问题描述】:

这个问题的表述有点奇怪,但我想要的是 Rspec 中 stub! 的替代方案,它不会产生弃用警告。

场景:

我使用stub! 来存根我的帮助规范中的某些帮助方法。

例如

stub!(:t_with_partner_lookup).and_return("test")

Rspec 建议使用不带感叹号的stub

所以我写(按照建议):

stub(:t_with_partner_lookup).and_return("test")

但是这会产生错误:

Stub :t_with_partner_lookup received unexpected message :and_return with ("test")

在我发现的另一个问题中,我必须使用 helper. 前缀。我做到了,但它并没有删除弃用警告,而是产生了错误。

helper.stub(:t_with_partner_lookup).and_return("test")

生产:

undefined method `t_with_partner_lookup' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_3:0x00000103256d50>

我也尝试过这种语法,但会产生与上述相同的错误:

helper.stub(:t_with_partner_lookup){"test"}

存根辅助方法的正确语法是什么?

我使用的宝石

  • 导轨 3.2.17
  • 最新版本的 rspec-rails

Ruby 2.1.0 版

【问题讨论】:

  • 我不确定这是否回答了您的问题,但请参阅myronmars.to/n/dev-blog/2013/07/…
  • 这只会将弃用消息重定向到单独的日志文件。可能是一个解决方案,但它忽略了“真正的”问题。

标签: ruby-on-rails ruby rspec


【解决方案1】:

我可以建议你试试

helper = Object.new.extend SomeHelper
helper.stub(:t_with_partner_lookup).and_return('test')

【讨论】:

  • Rspec 现在内置了辅助方法,使第一行无关紧要。
【解决方案2】:

通过使用允许语法解决了它:

allow(self).to receive(:t_with_partner_lookup).and_return("test")

【讨论】:

    猜你喜欢
    • 2012-06-25
    • 1970-01-01
    • 2014-04-13
    • 2022-09-23
    • 2020-09-05
    • 2014-12-25
    • 1970-01-01
    • 2017-05-25
    相关资源
    最近更新 更多