サブコントローラーのコントローラー仕様を書き込もうとしています。この場合は Admin::UsersController です。
CRUD アクションの基本セットがあります。
私のusers_controller_spec.rb
describe Admin::CarriersController do
before(:each) do
sign_in FactoryGirl.create(:admin)
end
it "should have a current_user" do
subject.current_user.should_not be_nil
end
describe "GET 'index'" do
it "assigns all users as @users" do
user = create(:user)
get :index
assigns(:users).should eq [user]
end
it "renders the index view" do
get :index
expect(response).to render_template :index
end
end
end
今私が直面している問題は、インデックスアクションです。私のコントローラーは機能し、単純な @users = User.all です
複雑なのは、私の User テーブルが STI であることです。
class User < ActiveRecord::Base
end
class Client < User
end
class Seller < User
end
私の工場
FactoryGirl.define do
factory :user do
name { Faker::Company.name }
sequence(:email) {|n| "test#{n}@test.com"}
password "password"
password_confirmation {|instance| instance.password }
type "Seller"
factory :admin do
type "Admin"
end
factory :seller do
type "Seller"
end
factory :client do
type "Client"
end
end
end
RSpec が私の assigns(:users) 期待値のクラス名と一致する問題を抱えているため、明らかに eq メソッドは機能していません。私の正確なエラーは次のとおりです。
1) Admin::UsersController GET 'index' assigns all users as @users
Failure/Error: assigns(:users).should eq user
expected #<ActiveRecord::Relation [#<Client id: 1282, name: "Marks-Kozey", type: "Client"...]> to eq #<User id: 1282, name: "Marks-Kozey", type: "Client"...
私の問題は私の工場ですか?または私は間違ってテストしています。STI をテストするのはこれが初めてなので、助けていただければ幸いです。