2013-07-18 3 views
2

에 sqlite가에서 전환 한 후 각각의 테스트 후 데이터베이스를 청소하지 데이터베이스 항목 수 나는 시험 도중 데이터베이스를 보았고 결코 데이터베이스를 청소하지 않았습니다.DB 클리너 내가 SQLite는 사용되었을 때이 설정은 잘 작동 PostgreSQL을

나는 다음과 같은 설정으로 전환하는 경우 :

config.before(:suite) do 
    DatabaseCleaner.strategy = :truncation 
    end 
    config.before(:each) do 
    DatabaseCleaner.clean 
    controller.stub(:should_navigate_user?).and_return(false) rescue "" 
    DatabaseCleaner.start 
    end 
    config.after(:each) do 
    DatabaseCleaner.clean 
    end 

내 테스트를 모두 통과,하지만 난 내 방법을 테스트 한 후 전에 청소를 호출 할 필요가있어?

각 테스트 전과 후에 데이터베이스를 정리할 필요는 없습니다. 맞습니까? 나는 어딘가에서 뭔가를 오해하고있는 것 같은 기분이 든다. 나는 무엇을 이해하지 못하고있다.

답변

1

sqlite를 비 영구 모드로 사용했습니다. PostgreSQL에는 이러한 옵션이 없으며 항상 영구적입니다. 데이터베이스를 완전히 삭제하려면 drop database/create database를 사용하십시오.

3

데이터베이스 청소기로 postgres를 사용하고 있습니다. 잘 작동하지만 처음에는 문제가 생긴 것을 기억합니다. 아래에 내 구성을 붙여 넣었습니다. 당신은 당신의 spec_helper.rb이 막대기 또는 다른 파일 등 /support/database_cleaner.rb 같은 수

또한
RSpec.configure do |config| 

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

    config.before(:each) do 
    DatabaseCleaner.strategy = :transaction 
    end 

    config.before(:each, :js => true) do 
    DatabaseCleaner.strategy = :truncation 
    end 

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

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

end 

당신이 spec_helper에서 떨어져 트랜잭션 비품을 설정해야합니다 :

config.use_transactional_fixtures = false 
+0

내가 같은 설정을 사용하고, 여전히 나를 위해 청소하지 않습니다. – WebQube

+0

그 이유는 무엇입니까? @WebQube? 이유가 없습니다. 그것은 유효한 구성이며 작동합니다. 아마도 무작위로 투표를하기 전에 상황에 대한 더 많은 정보를 제공해야합니다. – jacklin

+0

죄송합니다,하지만 그것이 내가 생각하는 것입니다, 지금은 스택 스택 투표를 못하게됩니다. – WebQube