0

두 번째 _spec 파일이 있습니다. 첫 번째 단위 테스트와 다른 하나는 일부 통합 테스트입니다.모두 함께 실행하면 Rspec 테스트에 실패합니다.

파일 이름을 지정하여 실행하는 동안 녹색으로 표시되고 "rspec"으로 실행하면 녹색으로 표시됩니다. 3 개는 실패합니다.

나는 database_cleaner gem을 사용하여 각 테스트마다 테스트 데이터베이스를 정리합니다.

config.use_transactional_fixtures = false 

    config.before(:suite) do 
    DatabaseCleaner.strategy = :transaction 
    DatabaseCleaner.clean_with(:truncation) 
    end 

    config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 

저는 "let"을 사용하여 객체를 인스턴스화하고 FactoryGirl을 사용하여 샘플 객체를 만듭니다.

이전에 이와 같은 경험이있는 사람이 있습니까?

+0

이것은 데이터베이스가 테스트 사이에 올바르게 재설정되지 않는 것처럼 들리므로 정확한 오류가 무엇인지 정확히 알 수 있습니다 (예 : 컬렉션 크기를 확인하고 불필요한 요소가있는 경우) . 또한 테스트 간의 합법적 인 충돌 일 수 있습니다. 이는 실패한 항목과 실패한 순서에 따라 달라집니다. – oowowaee

+0

@oowowaee 객체를 인스턴스화하기 위해 def에서 이동하여 해결했습니다. 이제 예상대로 작동하고 DatabaseCleaner – matteoredz

답변

1

일부 문제가 될 수 있습니다 : 당신은 수정하고 테스트 사이에 재설정되지 않습니다

  • 클래스 변수. 클래스 변수는 반 패턴이며 일반적으로 피해야합니다.
  • 당신은 상수와 같은 것들을 올바로 스텁하지 않습니다.

테스트간에 상태를 유지 관리하는 것으로 인해 문제가 발생할 수 있습니다. 디버거를 사용하여 각 테스트 중에 객체의 상태를 확인하십시오.

+0

에 대해서도 마찬가지입니다.이 질문에 대한 대답은 제공하지 않습니다. 충분한 [평판] (https://stackoverflow.com/help/whats-reputation)이 있으면 [모든 게시물에 주석 달기] (https://stackoverflow.com/help/privileges/comment) 할 수 있습니다. 대신, [질문자의 설명이 필요없는 답변을 제공하십시오] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do- 대신). - [리뷰에서] (리뷰/저품절 포스트/17574307) – rafalmp

0

나는 def에서 let으로 옮겨서 나의 문제를 해결했다. 정의를 숙지하십시오