Ruby on rails 4 用cancancan和design对控制器进行Rspec测试
我使用cancancan和Desive进行授权和认证。我有一个角色表,用户表有一个角色id。我需要帮助编写规范和工厂女孩测试。在我到达的那一刻Ruby on rails 4 用cancancan和design对控制器进行Rspec测试,ruby-on-rails-4,devise,factory-bot,rspec-rails,cancancan,Ruby On Rails 4,Devise,Factory Bot,Rspec Rails,Cancancan,我使用cancancan和Desive进行授权和认证。我有一个角色表,用户表有一个角色id。我需要帮助编写规范和工厂女孩测试。在我到达的那一刻 Failure/Error: expect(assigns(:blood_types)).to eq([blood_type]) 我知道我必须修正工厂女孩的角色。所以用户应该有一个角色,但我不知道怎么做 class BloodTypesController < ApplicationController before_filter :a
Failure/Error: expect(assigns(:blood_types)).to eq([blood_type])
我知道我必须修正工厂女孩的角色。所以用户应该有一个角色,但我不知道怎么做
class BloodTypesController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource
spec/factories/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
规格/工厂/血型.rb
FactoryGirl.define do
factory :blood_type do
name "AB"
end
end
规格/控制器/血液类型\u控制器\u规格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
您需要为
BloodType
创建一个工厂,就像为User
创建工厂一样
然后更改:
BloodType.create!对FactoryGirl.create(:blood\u type)有效的\u属性
我有血型工厂。刚刚更新了我的问题,包括该问题和有效的_属性。我尝试了你建议的更改BloodType.create!有效的属性
到FactoryGirl。创建(:血型)
没有帮助。检查它是否进入index
方法,并尝试使用expect(response)查看index
方法的响应状态。要成功
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