2017-05-18 7 views
1

레일 4 (레일 5에서 시스템 테스트라고 함)에서 여러 통합 테스트를 실행하는 데 어려움이 있습니다.레일 통합 테스트가 새로 시작되지 않음

환경 : Rails 4/Minitest/Capybara/Pterterist가 Puma 서버에서 실행 중입니다.

  1. 나는 새로운 기록, 그 때마다 작동 를 생성하는 하나의 테스트를 실행합니다. 나는 시험의 전체 집합을 실행하면

    RAILS_ENV="test" ruby -I test test/integration/requests_test.rb -n /create_new/ 
    
  2. 은, 위의 테스트 는 레코드가 이미 존재하기 때문에 때마다을 만드는 데 실패합니다. 그룹을 실행할 때, 레코드가 DB에 이미 생성되는 -

    RAILS_ENV="test" ruby -I test test/integration/requests_test.rb 
    

나는 시작에 puts Request.all.collect(&:name)를 추가하여이를 확인했다.

여기 핵심 문제 - 은 모든 테스트에 대해 DB가 신빙성이 없다는 의미입니다.. (단원 테스트와 기능 테스트는 그룹 단위 또는 개인 단위로 신선합니다.) 매번 통합 테스트가 매번 새로운 방식으로 시작되는지 어떻게 확인할 수 있습니까?

ENV['RAILS_ENV'] = 'test'을 지정 했는데도 위의 명령은 개발 모드에서 퓨마를 실행하는 것 같습니다.

답변

0

database_cleaner gem (https://github.com/DatabaseCleaner/database_cleaner)을 확인 했습니까? RailsHelper 구성에서 새 통합 테스트를 실행할 때마다이 데이터베이스를 사용하여 데이터베이스를 지울 수 있습니다. 나는 그들의 문서를 체크 아웃 하겠지만 내 모습은 다음과 같다 :

DatabaseCleaner.strategy = :truncation 

RSpec.configure do |config| 
config.before(:each) do 
    DatabaseCleaner.clean 
end 

config.after(:each) do 
    FactoryGirl.reload #if you're using FactoryGirl 
end 
end 
+0

이 대답에 대한 배경을 더 제공하십시오. 왜 작동합니까? 아마도 코드 샘플을 제공 할 것입니다. 좋은 답변을 만들려면 [guidelines] (https://stackoverflow.com/help/how-to-answer)를 참조하십시오. – Toby

관련 문제