On Jul 29, 2010, at 8:37 AM, Anderson Leite wrote:

> I have an action and I am testing it like this:
> 
> The action:
> ==========
>  def create
>    @event = Evento.new(params[:event])
>    @event.aproved = false
>    if @event.save
>      redirect_to :action => "index"
>    else
>      render :action => "new"
>    end
>  end
> 
> 
> The RSpec test:
> ==============
> 
>  before do
>    @event = mock_model(Event)
>    Event.stub!(:new).and_return(@event)

Use stub instead of stub! (which will eventually be deprecated)

>    @event.stub!(:aproved=).and_return(false)
>    @event.stub!(:save).and_return(true)

You can add the method stubs to the mock_model declaration:

@event = mock_model(Event, :approved= => false, :save => true)

>  end
> 
>  it "should register some event and keep it not aproved" do

The word "and" in an example's name suggests too many things are being spec'd 
in one example. I'd split these out into "registers the event" and "leaves the 
event un-approved"

HTH,
David

>    Event.should_receive(:new).once
>    @event.should_receive(:aproved=).once
>    @event.should_receive(:save).once
>    get "create"
>    response.should redirect_to :action => 'index'
>  end
> 
> 
> It seems to be working for me and the test is passing, by I think this
> test is still ugly or probabily can be improved.
> 
> How do you make tests like this?

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to