2014-01-13 2 views
2

일부»rspec«테스트를 트리거하는«buildr«»buildfile«이 있습니다. 테스트에 일부 경로 매개 변수를 전달하여 테스트 리소스 파일을로드하는 데 문제가 발생하지 않도록하고 싶습니다. »빌드 파일에서«나는 시험 트리거이 코드를 가지고 :Buildr, 테스트 할 RSpec-pass 빌드 매개 변수

RSpec.configure do |config| 
    config.add_setting :spec_resources_dir, :default => _(:src, 'spec', 'ruby', 'resources') 
end 

RSpec::Core::RakeTask.new(:run_rspec) do |t| 
    t.pattern = 'src/spec/**/*_spec.rb' 
end 
task test => [:run_rspec] 

을하지만이 같은 SPECFILE의 값을 검색하려고하면 :이 오류를 얻을

RSpec.configuration.spec_resources_dir 

undefined method `spec_resources_dir' […] (NoMethodError) 

아이디어가 있으십니까?

답변

1

RSpec의 레이크 작업은 별도의 프로세스에서 사양을 실행하므로 빌드 파일에서 RSpec.configure으로 수행하는 구성이 실행중인 사양에 표시되지 않습니다. 당신의 스펙 작업에 빌드 파일에서 정보를 전달하는

두 가지 제안 :

  1. spec_helper를 생성하고 사양에서 그것을 필요로 (또는 RSpec에의 -r 명령 행 옵션과 RSpec::Core::RakeTaskrspec_opts 설정 매개 변수를 통해). buildr의 필터링을 사용하여 빌드 파일의 값을 도우미로 대체 할 수 있습니다.
  2. 값을 ENV으로 설정 한 다음 사양에서 읽으십시오. 환경 변수는 부모 프로세스에서 자식 프로세스로 공유됩니다. 요청에 의해

는 # 1 예 :

RSpec::Core::RakeTask.new do |t| 
    t.rspec_opts = "-r '#{_(:target, 'spec_helper.rb')}'" 
end 

이 (아마도 다른 작업에) 대단히 대답처럼 보인다 _(:target, 'spec_helper.rb')

+0

에 사양 도우미를 생성하는 것으로 가정합니다! 갈퀴 작업의'rspec_opts'를 사용하는 방법을 보여줄 수있는 코드 줄을 놓으십시오. 루비와 rspec을 처음 접했고, 문서에 예제가 없습니다 ... 미리 감사드립니다! – philipp

+0

예제를 게시 해 주셔서 감사합니다. – philipp