2011-06-10 2 views
5

TestUnit에서 Spork와 Capybara를 설치하려고하는데 을 test.rb 구성 문제로 실행 중입니다.Spork Capybara, config.cache_classes conflict

문제는 Spork이 Spork에게 모든 시간을 재설정 할 필요없이 테스트를 실행할 때 모델의 변경이 반영 될 수 있도록 config.cache_classes가 false로 설정하는 것이 필요하다는 것이다.

카피 바라 (Capybara)는 config.cache_classes를 true로 설정해야합니다. 그렇지 않으면 통합 테스트 이 작동하지 않는 것 같습니다.

저는이 문제에 대한 가능한 해결책이나 설명을 찾고 있습니다. 은 TestUnit 내에 만 존재하거나 버그 버그 일 뿐이므로보고해야합니까? 어떤 도움을 크게 감사하겠습니다!

답변

3

this과 비슷한 접근 방식을 사용하는 것이 좋습니다. ,

Spork.each_run do 
    ActiveSupport::Dependencies.clear 
    ActiveRecord::Base.instantiate_observers 
end if Spork.using_spork? 

는 희망이가 cache_classes이 카피 바라를 위해 진실 할 수 있습니다 : 당신이해야 할 중요한 것은 참으로 당신의 config.cache_classes을 설정하지만, 각 실행에 모델과 종속성을 다시로드 Spork을 강제한다 테스트 실행 사이에 모델과 옵저버를 다시로드 할 수도 있습니다.

+0

나는이 문제에 대한 해결책을 찾아 다녔다. 나는 "이것을 시도하라"와 "뭔가를 좋아해라", 그리고 "잘하면된다"라고 말하는 주석 만 보았다. 불행히도이 답변은 다른 사람들보다 문제를 해결하는 데 더 이상 도움이되지 않습니다. –

1

나는 spork와 오이와 비슷한 문제에 부딪쳤다. 내가 찾은 해결책은 다음과 같습니다.

config.cache_classes = (ENV['DRB'] == 'true' ? false : true) 

spork는 DRB 환경을 설정합니다. 이 문제를 해결하는 가장 우아한 방법이라고 생각하지 않지만 capybara가 env 변수를 설정하면 사용할 수 있습니까?

+0

이것이 결국 내가 한 일입니다. cache_classes = false는 전체 테스트 스위트를 실행할 때 다른 곳에서 큰 고통을 안겨주지 만, 만약 내가 spork을 돌리고 있다면, 나는 보통 태스크 집중과 디버그 추가 등을하고있다. 위의 each_run 추가를하더라도, cache_classes가 true로 설정 되었다면 , spork은 나를 위해 다시로드하지 않을 것입니다. –