【问题标题】:Stub (...) received unexpected message (...) with (no args)存根(...)收到意外消息(...)(无参数)
【发布时间】:2013-04-08 17:38:24
【问题描述】:

我尝试使用 RR 编写测试。我需要的是一个模型对象的存根。

describe ApplicationController do

  subject(:application_controller)     { ApplicationController.new }
  let(:messages)                       { ['a1', 'a2', 'a3' ] }
  let(:model)                          { Object.new }

  it 'should copy errors to flash' do
    stub(model).error_messages { messages }
    flash[:error] == nil
    subject.copy_errors_to_flash(model)
    flash[:error].should == messages
  end

end

我得到的是

ApplicationController should copy errors to flash
     Failure/Error: stub(model).error_messages { messages }
       Stub #<Object:0x007ffaa803f930> received unexpected message :error_messages with (no args)
     # ./spec/controllers/application_controller_spec.rb:10:in `block (2 levels) in <top (required)>'

我不知道我做错了什么。我想我遵循文档...

【问题讨论】:

    标签: ruby unit-testing testing stub rr


    【解决方案1】:

    您在这一行的模型存根上调用方法 'error_messages:

    stub(model).error_messages { messages }
    

    我推测你实际上想在这里做点别的事情,很可能:

    model.should_receive(:error_messages).and_return(messages)
    

    它为 error_messages 创建一个存根方法,并在您的规范测试调用 model.error_messages 时使用您的消息数组进行响应

    【讨论】:

      猜你喜欢
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      相关资源
      最近更新 更多