The "should_receive" should appear before the "post :create" (look at this for a better explanation -> http://rubyforge.org/pipermail/rspec-users/2008-June/007342.html )
it 'should not save the issue' do @issue = mock_model(Issue) @issue.stub!(:save).and_return(:false) Issue.stub!(:new).and_return(@issue) @issue.should_receive(:save).and_return(:false) # you should define the "should receive" before calling "post :create" post :create, { :issue => {:title => 'some title', :description => ''}} end On Tue, Jul 22, 2008 at 10:36 PM, Camilo Torres <[EMAIL PROTECTED]> wrote: > > Hello, I am learning rspec/rspec-rails and ruby on rails. > > Controller: > class IssuesController < ApplicationController > def index > > end > > def new > @issue = Issue.new > end > > def create > @issue = Issue.new(params[:issue]) > @issue.save > end > end > > Spec: > require File.expand_path(File.join(File.dirname(__FILE__), > '../spec_helper.rb')) > > describe IssuesController do > it 'should sucess on index' do > get :index > response.should be_success > end > > describe 'create new issue' do > it 'should success on new' do > get :new > response.should be_success > end > > it 'should pass a new Issue to the view' do > issue = mock_model(Issue) > Issue.stub!(:new).and_return(issue) > get :new > assigns[:issue].should == issue > end > end > > describe 'saving with right data' do > it 'should save the issue' do > issue = mock_model(Issue) > Issue.stub!(:new).and_return(issue) > issue.stub!(:save).and_return(:true) > post :create, { :issue => {:title => 'some title', > :description => > 'some more data to describe'}} > assigns[:issue].should == issue > end > end > > describe 'when saving wrong data' do > # before(:each) do > # @issue = mock_model(Issue) > # @issue.stub!(:save).and_return(:false) > # Issue.stub!(:new).and_return(@issue) > # end > > # def post_create > # post :create, { :issue => {:title => 'some title', > :description => > 'some more data to describe'}} > # end > > it 'should not save the issue' do > @issue = mock_model(Issue) > @issue.stub!(:save).and_return(:false) > Issue.stub!(:new).and_return(@issue) > > post :create, { :issue => {:title => 'some title', > :description => ''}} > > @issue.should_receive(:save).and_return(:false) > end > > # it 'should flash the failure to save' do > > # end > end > end > > Error: > F.... > > 1) > Spec::Mocks::MockExpectationError in 'IssuesController when saving > wrong data should not save the issue' > Mock 'Issue_1001' expected :save with (any args) once, but received it 0 times > spec/controllers/issues_controler_spec.rb:51: > spec/controllers/issues_controler_spec.rb:3: > > Finished in 0.282526 seconds > > 5 examples, 1 failure > > > > I am running script/autospec. > > ¿What is wrong? I don't understand why this spec is not passing. I > have tried before(:each) and a helper method, but got the same. > > Please, help. > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users -- Maurício Linhares http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) João Pessoa, PB, +55 83 8867-7208 _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users