2017-05-20 13 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 

を働いていた私はこれを変更しましたこれは私が私が私がTESを実行したとき、私は問題を取得しています http://neo4jrb.readthedocs.io/en/8.0.x/Miscellany.html#cleaning-your-database-for-testingを見た後にこれを行っている私のプロジェクトではpostgres &のNeo4jを使用しています、私のデータベース・クリーナ・ファイルで

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を取り除くことを提案します。これは3つの異なる形式のデータベースクリーニングを提供しますが、Neo4jで実際に動作するのは1つだけなので、多くの点はありません(this page参照)。

neo4j宝石の8.1.xを使用している場合は、MATCH (n) DETACH DELETE nを実行する必要があります。以前は、データベース全体を削除した場合、SchemaMigrationノードが削除されたため、移行が実行される必要があるとGemは不満を持ちます。 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)に入れて、私のテストが新しい状態で実行されていることを確かめることができます。さもなければ、が壊れたテストファイルの1つがで終わったら、別のテストファイルが壊れてしまい、それが起こったときに何が起こっているのかは一般的には分かりません。

関連する問題