I have now managed to get the example to run as expected from The RSpec Book.
I would appreciate pointers on the following though: > As an aside, I already have an implemented model that I'd like to use > in my controller spec. In this case, should I be using stub_model() to > make use of it e.g.: > > context = stub_model(Context) > > Also the constructor expects a name to be passed in so can I write: > > Context.should_receive(:new).with("name" => "fred").and_return > (message) > post :create, :context => {"name" => "fred"} > > And then in the controller 'create' method: > > Context.new params[:context] On 15 May, 07:28, Lee <lee.longm...@googlemail.com> wrote: > I have been trying to spec a Rails Controller for the first time, > having just completed my first View spec. > > Having hit a wall trying to spec a controller for my own application, > I have tried to get an example in beta of The RSpec Book to work. I am > however experiencing the same failures. I would appreciate any > pointers on where I am going wrong. > > Here is the failure: > > 1) > Spec::Mocks::MockExpectationError in 'MessagesController POST create > should build a new message' > <Message (class)> expected :new with ({"body"=>"a quick brown fox"}) > once, but received it 0 times > ./spec/controllers/messages_controller_spec.rb:7: > script/spec:10: > > Here is the controller spec: > > require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') > > describe MessagesController, "POST create" do > > it "should build a new message" do > message=mock_model(Message) > Message.should_receive(:new).with("body" => "a quick brown > fox").and_return(message) > post :create, :message => {"body" => "a quick brown fox"} > end > > it "should save the message" > > end > > Here is the controller: > > class MessagesController < ApplicationController > def create > message = Message.new params[:message] > end > end > > And here is the (mocked) model: > > class Message > end > > *** > > As an aside, I already have an implemented model that I'd like to use > in my controller spec. In this case, should I be using stub_model() to > make use of it e.g.: > > context = stub_model(Context) > > Also the constructor expects a name to be passed in so can I write: > > Context.should_receive(:new).with("name" => "fred").and_return > (message) > post :create, :context => {"name" => "fred"} > > And then in the controller 'create' method: > > Context.new params[:context] > > I did try this but received an error from my model and trace > suggesting that the "name" was not being supplied. > > Thanks. > _______________________________________________ > rspec-users mailing list > rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users