문제

사양 등의 일부로 테스트하고 싶은 rakefile에 일련의 레이크 작업이 있습니다. 각 작업은 다음과 같습니다.

task :do_somthing => :environment do
  # Do something with the database here
end

여기서 : Environment Task는 ActiveRecord/Datamapper 데이터베이스 연결 및 클래스를 설정합니다. 나는 이것을 레일의 일부로 사용하지는 않지만 BDD의 일부로 실행하고 싶은 일련의 테스트가 있습니다.

이 스 니펫은 레이크 작업을 테스트하려는 방법을 보여줍니다.

def setup
  @rake = Rake::Application.new
  Rake.application = @rake
  load File.dirname(__FILE__) + '/../../tasks/do_something.rake'
end

should "import data" do
  @rake["do_something"].invoke
  assert something_in_the_database
end

그래서 나의 도움 요청 - test_helper.rb 파일의 환경 작업을 과도하게 승차 할 수 있습니까? 도우미 파일에서 작업을 재정의하려고 시도했지만 작동하지 않습니다.

지난주에 이것에 갇혀 있었기 때문에 해결책에 대한 도움이 좋을 것입니다.

도움이 되었습니까?

해결책

비슷한 문제에 대한 "솔루션"은 .Rake 파일에서 모든 논리를 추출하고 작업을 수행하는 클래스를 작성하여 레이크 파일에 한 줄 호출 만 남겨 두는 것이 었습니다. 그런 다음 수업은 거의 정상적으로 테스트 될 수 있습니다.

나는 이것이 광범위한 상태를 유지하는 복잡한 상호 의존적 작업 세트에 얼마나 잘 어울릴 지 모르겠다.

내가 더 좋은 것을 놓친 것인지 궁금합니다.

편집 : 블로그 게시물이있었습니다 여기 그 (a)는 같은 것을 말하고 (b) 더 잘 말합니다. 그가 먼저 말한 것 같습니다.

다른 팁

나는 당신 이이 줄을 찾고 있다고 생각합니다 : require (file.join (rails_root, 'config', '환경'))는 "작업 : 환경"구현에서 찾은 것입니다.

RSPEC을 사용하여 레이크 작업을 테스트하는 데 사용합니다.

테스트를 실행할 때 환경은로드되는 것이 테스트입니다.

따라서 테스트 데이터베이스 와만 상호 작용하고 있습니다.

그래서 나는 test_helper.rb에서 당신의 레이크 작업을 무시할 이유가 없다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top