> 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.