> On Sep 1, 2015, at 2:40 PM, Zlodiak Zlodiak <li...@ruby-forum.com> wrote:
> 
> please help solve the problem.
> 
> poll controller:
> 
> class PollsController < ApplicationController
>  def index
>    @user = User.find(params[:user_id])
>    @polls = @user.polls.paginate(page: params[:page], :per_page =>
> 10).order(title: :DESC)
>  end
> end
> 
> route:
> 
> user_polls GET    /users/:user_id/polls(.:format)
> polls#index
> 
> polls_controller_spec.rb:
> RSpec.describe PollsController, type: :controller do
>  describe "GET #index" do
>    before :all do
>      @user = FactoryGirl.create(:user)
>    end
> 
> 
>    it "assign user as @user" do
>      get :index, user_id: @user.id
>      expect(assigns(:user)).to eq(@user)
>    end
> 
> 
>    it "assigns polls as @polls" do
>      get :index, user_id: @user.id
>      expect(assigns(:polls)).to eq([@poll])
>    end
> 
> 
>    it "redirects to the index view" do
>      get :index, user_id: @user.id
>      expect(response).to render_template("index")
>    end
>  end
> end
> 
> after run tests, i get follow error message:
> 
> kalinin@kalinin ~/rails/phs $ rspec
> spec/controllers/polls_controller_spec.rb
> .F.
> Failures:
>  1) PollsController GET #index assigns polls as @polls
>     Failure/Error: expect(assigns(:polls)).to eq([@poll])
>       expected: [nil]
>            got: #<ActiveRecord::AssociationRelation []>
>       (compared using ==)
>       Diff:
>       @@ -1,2 +1,2 @@
>       -[nil]
>       +[]
>     # ./spec/controllers/polls_controller_spec.rb:16:in `block (3
> levels) in <top (required)>'
> 
> Finished in 1.23 seconds (files took 2.81 seconds to load)
> 3 examples, 1 failure
> Failed examples:
> rspec ./spec/controllers/polls_controller_spec.rb:14 # PollsController
> GET #index assigns polls as @polls
> 
> 
> as you can see problem in test 'assigns polls as @polls'. I do not
> understand why array @polls is empty

I think you need to add a factory for polls, and ensure that you assign a poll 
to that array before you test to see if there are any. Each test runs alone, 
and not in a predictable order unless you’ve disabled the test randomization 
feature in Rspec. Each test has a completely new and fresh look at the 
application, with no preconceived data to work with unless you provide it in 
your test, as you have done for the @user here.

Walter

> 
> -- 
> Posted via http://www.ruby-forum.com/.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/424c01ce4628e68a91d5de7465cf9604%40ruby-forum.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/BDD0E7E1-8601-40BF-BFBC-172A2C9FFACF%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to