2013-04-28 2 views
1

테스트를 위해 rspec을 사용하고 테스트를 실행 한 후 테스트 데이터베이스에 일부 레코드가 남겨지는 경우가 있습니다. 이유가 확실하지 않습니다. 내 설정 파일에서 true로 설정된 use_transactional_fixtures가 있습니다. 그러나 나는 기록을 수동으로 삭제할 때까지 사라지지 않는다. 누구든지 이걸 막을 방법이 있니?레일스 테스트 데이터베이스가 일부 실행 후 지워지지 않음

EDIT; 전에는 테스트가 실패했을 때만이라고 말했어. 그것은 더 이상 사실이 아닙니다.

답변

4

문제점을 발견했습니다. Before(:all) blocks are not transactional

+0

[documentation] (https : //www.relishapp.com/rspec/rspec-rails/v/3-5/docs/transactions) : *'before (: all) '에서 생성 된 데이터는 롤백되지 않습니다 *. –

0

시도해보십시오. database_cleaner 보석.

잘림 또는 거래 전략이 효과가 있습니다.

주의 : 테스트 스위트를 매우 느리게 실행합니다.
일반적으로 RSpec의 before,(정상적으로 사용하는 경우)은 정상적으로 작동합니다.

+1

이전과 이후의 올바른 사용은 무엇을 의미합니까? 부적절한 사용은 무엇입니까? 매번 제가보기에는 문제가 아닙니다. 기록을 남길 수있는 요소가 무엇인지 알 수 없으므로 새로운 보석을 추가하기보다는이를 중단하고 싶습니다. – bdwain

+1

이것은 테스트 슈트가있는 것입니다. 우리가 생각하는 것과 상관없이, 데이터는 데이터베이스에 유지됩니다. 나는 공장 가동을 위해 실제로 노력했다. 지난 번, 나는이 보석을 사용해야했기 때문에,이 때문에. 그것이 일을 완벽하게했지만. :) – kiddorails

+0

당신이 그것의 블록과 전/후/주변 (: 모든) (그리고 예제별로 실행되지 않는 다른 것들을 만드는 것을 피한다면 당신은 잘되어야한다고 생각합니다. – bdwain

관련 문제