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'方法的響應狀態 –