On Tuesday, 1 September 2015 14:40:39 UTC-4, Ruby-Forum.com User 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
>
>
Unless you accidentally removed it when posting here, you aren't creating
any Poll records. `@poll` is also not set to anything...
--Matt Jones
--
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/21d88a9b-7ea1-4bf8-9b9e-3858f62da80c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.