【问题标题】:stub is not defined while testing测试时未定义存根
【发布时间】:2014-04-08 11:07:49
【问题描述】:

假设,我正在运行这个测试

Class MyModelTest < ActiveSupport::TestCase  
  def setup do
    @mymodel = MyModel.new
  end

  @mymodel.stub(:method).and_return { true }

但我得到:undefined method 'stub' for nil:NilClass。我以为它与nil 实例有关,实际上当我用@mymodel 转储数据时,我收到相同的消息undefined method stub'。然后我试了@mymodel.stubs(:method).and_return { true },得到了这条消息

undefined method `and_return'

我该如何解决?

【问题讨论】:

  • 您的原始代码是rspec 语法,而不是mocha 语法
  • @UriAgassi 实际上,如果我实现上述响应并将stub 替换为stubs,它就可以工作。怎么会这样?我的代码rspec 中包含什么类型代码,因为它可以与指定的修改一起使用?
  • 也许我把“语法”这个词弄糊涂了。我的意思是 API。 stuband_returnrspec 库的 API。 stubsreturnmocha API 的一部分。 (@MarekLipka 在他的回答中有错字)
  • 非常感谢您

标签: ruby-on-rails ruby testing ruby-mocha


【解决方案1】:

试试这个:

@mymodel.stubs(:method).returns(true)

【讨论】:

  • 是的,它确实通过了,但当且仅当我将 stub 替换为 stubs 时。为什么会这样?
  • @user1611830 看看 Uri Agassi 的评论。
猜你喜欢
  • 2015-01-26
  • 2017-11-10
  • 2018-03-15
  • 2019-09-25
  • 2019-05-06
  • 2021-04-24
  • 2019-09-02
  • 2017-07-20
  • 2018-07-20
相关资源
最近更新 更多