Rails 3.1.3
rspec latest

I have started using rspec a few days ago, although I had been developing
in Rails for a while.

I have developed a Rails application without thinking about tests at all,
but recently realized the importance of BDD.
The application has models and controllers that are already in action.
 They work fine up to this point.  then I installed
rspec and rspec-rails.

I have questions about controller functional test.
The original index of controller is

  def index
    @gives = Give.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @gives }
    end
  end

The generated default controller_spec.rb is

  describe "GET index" do
    it "assigns all gives as @gives" do
      give = Give.create! valid_attributes
      get :index, {}, valid_session
      assigns(:gives).should eq([give])
    end
  end

fixtures/gives.yml is

one:
 check_in: true
 weight:      4
 user_id:     2
 day_departure: "2012-12-01"
 flight_name_id: 3

with the command

 rake db:fixtures:load

If I run command

  bundle exec rspec spec/controllers/gives_controller_spec.rb

All tests fail.
and the error corresponding to index is

  1) GivesController GET index assigns all gives as @gives
     Failure/Error: give = Give.create! valid_attributes
     ActiveRecord::RecordInvalid:
       Validation failed: Flight name can't be blank, Day departure can't
be blank, Check in can't be blank, Weight can't be blank, User can't be
blank
     # ./spec/controllers/gives_controller_spec.rb:39:in `block (3 levels)
in <top (required)>'


Questions:

1. Doesn't rspec generate default test codes so that the test will succeed?
2. Can you guess the cause of the error?
3. Doesn't rspec pick up the data from fixtures automatically? (perhaps I
misunderstand the role of fixtures)

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

Reply via email to