2017-05-20 14 views
1

와 데이터베이스 청소기 & eno4j.rb 모든 Neo4j & Neo4j.rb의 새 버전으로 업그레이드하면 좋은Rsepc - neo4j의 오래된 버전으로 Neo4j.rb 8.0.13

RSpec.configure do |config| 
    config.before(:suite) do 
    DatabaseCleaner.clean_with(:truncation) 
    DatabaseCleaner[:neo4j, connection: { type: :server_db, path: ENV['TEST_GRAPHENEDB_URL'] }].strategy = :truncation 
    end 

    config.before(:each) do 
    DatabaseCleaner.strategy = :transaction 
    DatabaseCleaner[:neo4j, connection: { type: :server_db, path: ENV['TEST_GRAPHENEDB_URL'] }].strategy = :transaction 
    end 

    config.before(:each, js: true) do 
    DatabaseCleaner.strategy = :truncation 
    DatabaseCleaner[:neo4j, connection: { type: :server_db, path: ENV['TEST_GRAPHENEDB_URL'] }].strategy = :truncation 
    end 

    config.before(:each) do 
    DatabaseCleaner.start 
    DatabaseCleaner[:neo4j, connection: { type: :server_db, path: ENV['TEST_GRAPHENEDB_URL'] }].start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    DatabaseCleaner[:neo4j, connection: { type: :server_db, path: ENV['TEST_GRAPHENEDB_URL'] }].clean 
    end 
end 

을 일하고 난이 변경되었습니다 이, 내 프로젝트 & neo4j은 내가 TES를 실행할 때이 문제를 얻고 http://neo4jrb.readthedocs.io/en/8.0.x/Miscellany.html#cleaning-your-database-for-testing보고 후이 작업을 수행 한 포스트 그레스를 사용하고 내 데이터베이스 청소기 파일입니다

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

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

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

    config.after(:each) do 
    DatabaseCleaner.clean 
    Neo4j::ActiveBase.current_session.query('MATCH (n) DETACH DELETE n') 
    end 
end 

파일 t의 경우는

Neo4j::PendingMigrationError: 
    Migrations are pending: 
    20170324201940 
    20170324202013 
    20170324202025 
    20170324202040 
    20170324202053 
    20170324202110 
    20170324202522 
    20170324202604 
    20170324202801 
    20170328203203 

답변

3

난 그냥 완전히 DatabaseCleaner 치우는 게 좋을 것. 세 가지 다른 형태의 데이터베이스 정리 기능을 제공하지만, 하나만 Neo4j에서 실제로 작동하므로 많은 점이 없습니다 (this page 참조).

neo4j 보석의 8.1.x를 사용하는 경우 MATCH (n) DETACH DELETE n을 수행 할 수 있어야합니다. 이전에 전체 데이터베이스를 삭제 한 경우 젬은 SchemaMigration 노드가 삭제 되었기 때문에 마이 그 레이션을 실행해야한다고 불평 할 것입니다. 8.1에서는이 검사가 이제 무시됩니다. 8.1 전에 같은 것을하고 싶은 것 :

MATCH (n) WHERE NOT n:`Neo4j::Migrations::SchemaMigration` DETACH DELETE n 

것은 또한, 별도로 8.1 당신이 rake neo4j:migrate을 대신하는 대신 각각의 마이그레이션을 통해 실행의 제약/모든 인덱스를로드 rake neo4j:schema:load하지 할 수 있습니다를, 더 많은 마이그레이션을 수행하면 느려지고 느려질 수 있습니다. neo4j:schema:load이 작동하려면,하지만 당신은 db/neo4j/schema.yml 파일 (해당 파일은 당신이 당신의 마이그레이션과 동기화에있어 너무 rake neo4j:migrate을 실행 신선한마다 다시 생성) 저장소로 선택되어 있는지 나는 또한 선호

을 확인해야 내 DELETE 문을 after(:each) 대신 before(:each)에 넣으면 내 테스트가 새로운 상태로 실행되고 있는지 확인할 수 있습니다. 그렇지 않으면 이 아닌 하나의 깨진 테스트 파일이 다른 테스트 파일을 망가 뜨리고 그 일이 벌어졌을 때 무슨 일이 벌어지고 있는지 명확하지 않습니다.