저는 레일스와 TDD에 상당히 익숙하며 (내 게시물에서 분명히 알 수 있듯이) Rspec 및 FactoryGirl 주변에 두뇌를 감싸는 데 어려움을 겪고 있습니다.FactoryGirl + RSpec + Rails 3 '정의되지 않은 메소드 <attribute> ='
내가 레일 (3)을 사용하고, RSpec에 공장 소녀 :
gem 'rails', '3.0.3'
# ...
gem 'rspec-rails', '~>2.4.0'
gem 'factory_girl_rails'
내가 성공적으로 개발 과정에서 테스트를 실행했습니다 사용자 모델을 가지고,하지만,라고하는 속성을 추가하는 데 필요한 "출처". 이는 사용자 기록이 원래 어디서 왔는지 (로컬 대 LDAP)를 결정하기위한 것입니다. 내 factories.rb 파일에서
, 나는 여러 공장은 같은 모양이, 정의 다음# An alumnus account tied to LDAP
Factory.define :alumnus, :class => User do |f|
f.first_name "Mickey"
f.last_name "Mouse"
f.username "mickeymouse"
f.password "strongpassword"
f.source "directory"
end
내가 가진 (즉, 지금까지 일해) 같이 보이는 정의 매크로 :
내가 그렇게 (users_controller_spec.rb에서 예)처럼 여러 사양에 전화 해요def login(user)
before(:each) do
sign_out :user
sign_in Factory.create(user)
end
end
:
describe "for non-admins or managers" do
login(:alumnus)
it "should deny access" do
get :index
response.should redirect_to(destroy_user_session_path)
end
end
나는 "소스"속성을 지정하지 않으면, 모든 확인을 작동하지만 난에서 속성을 문제에 액세스 할 수 없습니다
12) UsersController for non-admins or managers should deny access
Failure/Error: Unable to find matching line from backtrace
NoMethodError:
undefined method `source=' for #<User:0x00000100e256c0>
테스트를 실행할 때 최대한 빨리처럼, 정말 같은 오류가 발생합니다 레일 콘솔과 응용 프로그램 자체, 그리고 그것은 내 attr_accessible에 사용자 모델에 나열되어 있습니다. 거의 Rspec이 내 모델의 구버전을보고 있으며 그 모델에 속성을 추가했음을 알지 못합니다. 내 사용자 모델에 다음 줄을 넣어하지만, 오류가 실제로 올바른 모델을 찾고 나에게 나타냅니다 ...
attr_accessor :source
을 사라집니다.
도움말!
감사! 예 - 그게 전부였습니다 ... 테스트 데이터베이스를 사용하여 잊어 버렸습니다 ... – dearlbry
Big save! 고마워요 @ TK-421. 완전히 테스트 DB에 있다는 것을 잊어 버렸습니다 ... – MorningHacker
신의 축복을 받으십시오. – ant