2009-06-19 5 views
3

몇 가지 모듈을 추가하고이를/lib 디렉토리에 놓았습니다. lib 디렉토리가 마술처럼로드되었습니다 (lib 디렉토리를 프로젝트 초기에로드하고 잊어 버린 경우 제외). 그러나 추가 모듈이 필요한 단위 테스트를 실행하면로드되지 않습니다.Rails에서 Test :: Unit 테스트를 실행할 때 lib 파일을로드 하시겠습니까?

테스트를 실행할 때 lib 디렉토리를 자동으로로드해야합니까? 아니면 테스트를 위해 우아한 방법이 있습니까? 레이크 스크립트 + Test :: Unit이 내 Rails 환경을 정확히로드했으면 좋겠지 만, 그렇지 않은 것 같습니다.

require File.expand_path(File.dirname(__FILE__) + "/../lib/foo") 

내가 좋아하는 표준 레이크 스크립트 내 테스트를 실행 해요 :

rake test 
rake test:units 
rake test:functionals 

답변

4

가 귀하의 lib 디렉토리가 자동으로로드되지 않습니다 나는 test_helper.rb이 같은 추가 뭔가를하고 왼쪽 해요 울타리. 로딩은 const_missing을 무시하는 ActiveSupport :: Dependencies를 통해 발생합니다. 상수를 처음 사용할 때 정의되지 않은 경우 Rails는 lib 디렉토리 (및로드 경로의 다른 위치)에서이를 찾으려고 시도합니다. 이를 수행하기 위해 SomeClass이라는 항목이 some_class.rb이 될 것으로 예상되는 명명 체계를 사용합니다. 테스트 모드의 레일즈도 같은 메커니즘을 사용합니다. config/environments/test.rb와 config/environments/development.rb를 점검하여 필요한 것을 가지고 재미있는 일을하는지 확인하십시오. 즉, 명명 체계를 확인하십시오.

+0

네 말이 맞아 - 내가 내 대신 당신이 말한 것처럼 상수의 상대 경로를 필요로하고 있었다 밝혀, 그래서 나는했다 : 필요한 'REXML : 은'lib 디렉토리/REXML ' 대신 단지의를 필요로 ' 이제 text_helper에 명시 적으로로드하지 않아도 테스트에서 모든 것이 잘 작동합니다. –

관련 문제