사용자 모델 (devise + cancan)의 인증을 테스트하는 기능을 작성하려고합니다. 사용자에게는 다른 역할이 부여 될 수 있습니다. 요점은 인증 된 사용자가 역할 중 하나 ("admin"또는 "registered") 중 하나를 가질 때 기능을 테스트하는 것입니다. 기본적으로 사용자는 "등록 된"역할을 갖는 것으로 작성됩니다. 나는 rails3-devise-rspec-cucumber과 Authorization and users management in rails을 시작으로 사용하고 있습니다.오이 기발한
그래서있어 다음 표
sqlite> .tables
roles_users users views
roles schema_migrations
응용 프로그램/모델/user.rb
class User < ActiveRecord::Base
has_and_belongs_to_many :roles
before_save :setup_role
...
def setup_role
if self.role_ids.empty?
self.role_ids = 2 # corresponds to "registered"
end
end
end
응용 프로그램/모델/role.rb
class Role < ActiveRecord::Base
has_and_belongs_to_many :users
attr_accessible :name
end
기능/user_authentication . 특징
나는 오이를 실행하면 10기능/step_definitions/user_definition.rb
...
def create_user
create_visitor
delete_user
@user = FactoryGirl.create(:user, @visitor)
end
...
Given /^I exist as a user$/ do
create_user
end
사양/공장
FactoryGirl.define do
factory :user do
email '[email protected]'
password 'changeme'
password_confirmation 'changeme'
end
factory :role do
role_id 2
end
end
, 나는 오류 얻을 user.rb/
Scenario: User signs in successfully # features/user_authentication.feature:12
Given I exist as a user # features/step_definitions/user_definition.rb:58
Couldn't find Role with id=2 (ActiveRecord::RecordNotFound)
./app/models/user.rb:21:in `setup_role'
나는 내가 공장이나 협회를 잃어 버렸음에 틀림 없다고 생각한다. 그러나 나는 그 주제를 처음 접했고 n 문제를 해결하는 방법을 알아 냈습니다. 당신의 충고에 감사드립니다.