[RSpec] Jak to stestowac?

Czesc,

Mam taka akcje:

def show @message = Message.prepare_for_show(params[:id]) end
i proboje ja “wyspecowac” tak:

describe "GET /show should assign message as @message" do Message.stub!(:prepare_for_show).with("667").and_return([mock_model(Message)]) get :show, :id => "667" assigns[:message].should == [mock_model(Message)] end
Ale mi to cos nie dzila. Ten przyklad nie przechodzi:

FAILED
expected: [#<Message:0x…fdb5ba67a @name=“Message_1002”>],
got: nil (using ==)
./spec/controllers/message_controller_spec.rb:10:

może mi ktos podpowiedziec co jest nie tak?

Z gory dzieki.

Brakuje Ci bloku it … end, poza tym nie użyłbym w tym przypadku stub! tylko should_receive. Zamiast mocków możesz skorzystać z fixtur i testować faktyczną metodę :prepare_for_show w kontrolerze po raz drugi, nikt tego nie zabrania.

describe MessagesController do it "#show should call prepare_for_show and assign to @message" do message = mock_model(Message) Message.should_receive(:prepare_for_show).with("667").and_return(message) get :show, :id => "667" assigns[:message].should == message end end