Watir 및 RSpec을 통해 통합 테스트를 수행하려고합니다. 그래서/integration 내에서 테스트 파일을 만들고 테스트 사용자를 추가하여 factory_girl을 통해 테스트 사용자를베이스에 추가합니다.factory_girl 레코드는 어디에 있습니까?
문제는 - 실제로 테스트 사용자와 로그인을 수행 할 수 없습니다. 내가 쓴 시험은 다음과 같습니다 : 나는 테스트를 시작하고 브라우저에서 "성능"을 참조하고 있습니다으로
...
before(:each)
@user = Factory(:user)
@browser = FireWatir::Firefox.new
end
it "should login"
@browser.text_field(:id, "username").set(@user.username)
@browser.text_field(:id, "password").set(@user.password)
@browser.button(:id, "get_in").click
end
...
, 그것은 항상 Username is not valid
오류를 발생합니다.
저는 조사를 시작했고 작은 트릭을했습니다. 우선, 공장에서 실제로 DB에 사용자를 생성하면 의심이 생기기 시작했습니다. 그래서 공장에 대한 즉각적인 호출 이후에 이 실제로 DB에있는이라는 것을 발견하기 위해 일부 puts User.find
물건 만 넣었습니다. 좋아,하지만 사용자가 아직 로그인 할 수 없었기 때문에 나는 DB에 자신의 눈이 있는지 확인하기로 결정했습니다.
공장 호출 직후에 sleep
을 추가했으며 현재 DB에 무엇이 있는지 확인했습니다. 나는 사용자가 실제로 거기에서 놓치고있는 것을보기 위해 깔려졌다! 어째서? 그래도 코드 내에서 사용자를 출력하려고 할 때 실제로 어딘가에서 가져 오는 중입니다. 그래서 런타임에 factory_girl이 만든 레코드는 어디에 있습니까?test
또는 dev
DB입니까? 나는 그것을 얻지 않는다.
test
모드에서 내 잡종을 실행하는 경우 10 번 확인했는데 (통합 테스트를 조정하려고 했으므로 문제가되는 것 같습니까?) 내 database.yml
이 올바른 연결을 보유하고 있다면 데이터.
여기에 authlogic을 사용하고 있는데, 단서를 줄 수 있다면 (아니요, 여기에 activate_authlogic
이 적용되지 않습니다).
사용자가 공장에서 생성하는 소녀가 활성화 되었나요? – shingara
@shingara 내가 Factory를 호출하는 순간, 생성자'User'가 빌드되어 db에 적용됩니다. – gmile
예, 컨트롤러로 연결하는 동안 예를 통해 이메일로 활성화 여부를 확인할 수 있습니다. – shingara