[rspec-users] [HELP] should receive :new but does not

Camilo Torres xtrmclmb at gmail.com
Tue Jul 22 22:03:05 EDT 2008


thanks Maurício, I read your link. It worked.

2008/7/23 Maurício Linhares <mauricio.linhares at gmail.com>:
> 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 <xtrmclmb at gmail.com> 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 at 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 at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list