2013-04-16 74 views
0

我嘗試使用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)>' 

我不知道我做錯了。我想,我按照文檔...

回答

3

你調用該線路上的方法「error_messages對模型的存根:

stub(model).error_messages { messages } 

我假定你真的想人在這裏做一些事情,最有可能的:

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

這對於error_messages創建一個存根方法,每當你的規範測試要求model.error_messages

將與您的郵件迴應陣