0
我已经使用cancancan和设计进行授权和验证。我有一个角色表和用户表都有role_id。我需要帮助来写规格和工厂女孩的测试。目前我得到cancancan和devise控制器的Rspec测试
Failure/Error: expect(assigns(:blood_types)).to eq([blood_type])
我知道我必须修复工厂女孩的角色。所以用户应该有一个角色,但我不知道如何。
class BloodTypesController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource
规格/支持/ controller_macros.rb
module ControllerMacros
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
user= FactoryGirl.create(:user)
sign_in user
end
end
end
规格/工厂/ users.rb的
FactoryGirl.define do
factory :user do
first_name Faker::Name.first_name
email { Faker::Internet.email }
password "password"
password_confirmation "password"
confirmed_at Date.yesterday
end
end
规格/工厂/ blood_types.rb
FactoryGirl.define do
factory :blood_type do
name "AB"
end
end
规范/controllers/blood_types_controller_spec.rb
RSpec.describe BloodTypesController, type: :controller do
let(:valid_attributes) {
FactoryGirl.build(:blood_type).attributes
}
let(:valid_session) { {} }
describe "GET #index" do
login_user
it "assigns all blood_types as @blood_types" do
blood_type = BloodType.create! valid_attributes
get :index, {}
expect(assigns(:blood_types)).to eq([blood_type])
end
end
我blood_type工厂。只是更新了我的问题,包括那个和valid_attributes。我尝试了你建议改变'BloodType.create! valid_attributes'到'FactoryGirl.create(:blood_type)'没有帮助。 – user1876128
检查是否进入'index'方法,并尝试使用'expect(response).to be_success'来查看'index'方法的响应状态 –