8

FactoryGirl에서 내 보호 속성 user.confirmed을 설정하지 않습니다. 가장 좋은 방법은 무엇입니까?FactoryGirl로 보호 속성 설정

Factory.define :user do |f| 
    f.name "Tim"   # attr_accessible -- this works 
    f.confirmed true  # attr_protected -- doesn't work 
end 

내 공장을 사용한 후 @user.confirmed = true을 할 수 있지만,이 테스트의 많은 걸쳐 반복의 많은입니다.

답변

10

작동합니다

Factory.define :user do |f| 
    f.name "Tim" 
    f.after_create do |user| 
    user.confirmed = true 
    user.save 
    end 
end 
+2

그레이트를 찾았습니다. 더 최근의 공장 소녀 버전은 구문을'after (: create)'로 변경했습니다. [시작 안내서] (https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md)를 참조하십시오. –

3

FactoryGirl이 대량 할당으로부터 사용자를 보호하고 있기 때문에 사용자를 생성 할 때이를 해시에 전달해야합니다. after_create 후크를 사용

user ||= Factory(:user, :confirmed => true) 
+0

감사합니다 - 그냥이 시도했지만 작동하지 않았다 – brittohalloran

+2

나를 위해 Works FactoryGirl 2.1.0. – iwasrobbed

+0

2.3.2를 사용하고 있습니다. 그렇지만 가능성은 희박합니다. – brittohalloran

0

또 다른 방법은 레일 '과 같은 역할 내장을 사용하는 것입니다

#user.rb 
attr_accessor :confirmed, :as => :factory_girl 

때 대량 할당이 역할 FactoryGirl 방송을 이 패턴은 가능합니다.

장점 :는 빠르고 간단하고 깨끗한 (이하 콜백 코드)
단점 공장을 유지 : 당신은 당신의 테스트 :(죄수를 해결하기 위해

일부 검증되지 않은 제안을 모델 코드를 변경 . : | _helper [사양 테스트] 당신은 당신의 공장 위의 클래스를 다시 열 수

  • 당신은에서 클래스를 다시 열 수