Spec

2013-08-22 2 views
1

RSpec 파일에서 FactoryGirl을 사용하여 RSpec 파일에서 사용한 객체를 만들었습니다. RSpec 파일에서 세 객체를 사용했습니다. A, BC 여기서 C는 B에 의존하고 B는 A에 종속됩니다. 여기 RSpec 파일에는 두 가지 테스트 사례가 있습니다. 하나는 테스트 용이고 다른 하나는 index 컨트롤러 용이고 다른 하나는 update입니다. 방법. 다음과 같이 그래서, 나는 그 두 가지 방법을 테스트하는 데 사용 한 개체를 만들었습니다Spec

before(:each) do 
    @A = FactoryGirl.create(:A) 
    @B = FactoryGirl.create(:B) 
    @C = FactoryGirl.create(:C) 
end 

을 그리고 여기 그래서 내가 이미 해당 테스트 데이터베이스를 사용하고, 레일의 테스트 환경을 사용하고 있습니다.

after(:each) do 
    C.all.destroy 
    B.all.destroy 
    A.all.destroy 
end 

을하지만 문제는 내가 테이블이 그들에 해당하는 확인하고있는 동안, 사양을 실행 한 후 나는 데이터가 삭제되지 않습니다 찾을 것입니다 : 그래서 나는 다음과 같은 코드를 작성했습니다, 실행 한 후 데이터베이스를 청소합니다. 여기에 제 모델에 DataMapper를 사용했습니다. 그래서 아무도 날이 문제를 해결하는 데 도움이 제발 그 테이블을 각각의 사양을 실행 후 청소. 고맙습니다.

+0

사용 트랜잭션 비품 : 또한 당신이 외부 도구 (셀레늄 또는 다른 드라이버) 그것은 모든 권리가 설명한 것

와 함께 사용할 수 있도록 삭제/잘라 내기와 구체적인 예제를 실행하도록 구성 할 수 있습니다! ('spec_helper.rb' 파일에서 설정). 또는 여러 스레드가 필요한 성가신 사양에 대해 database_cleaner를 사용하십시오 (따라서 db 트랜잭션을 안전하게 사용할 수 없음). – sevenseacat

답변

0

데이터베이스 클리너 젬을 사용해야합니다. 트랜잭션에서 스펙을 실행하여 각 예제간에 데이터베이스를 정리할 수 있습니다.

https://github.com/bmabey/database_cleaner

+0

그러나 그것을 읽고 Google에서 몇 개의 링크를 통해 DataBase Cleaner gem을 사용하여 DataMapper를 사용하는 방법을 찾지 못했습니다. 기사는 주로 ActiveRecord를 다룹니다. – Joy