5

MongoDBでNodeJSで書かれたアプリケーションの統合テストを書いています。NodeJSでの統合テスト用にMongoDBを設定するには?

CIサーバー上では、より速いパフォーマンスと容易な制御のために、ある種の埋め込みMongoDBが必要です。 現在、私はMongoDBを他のサーバーに持っていますが、テストは遅いです。それぞれのテストの前に、すべてのコレクションを削除する必要があります。私はORMとしてマングースを使用しています。

これまでのところ、埋め込みMongoDB for Javaは見つかりませんでした。

+0

あなたのCIサーバに専用のMongoDBインスタンスを設定することができます。 –

答えて

0

私たちのチームは、mongoスキンコールをスタブしています。あなたのテストパッケージに応じて、同じことをすることができます。それは少し仕事がかかりますが、それはそれだけの価値があります。スタブ関数を作成し、テストで必要なものを宣言するだけです。原則を「あなたが所有していないタイプのためにテストダブルを使用しない」に続き

// Object based stubbing 
    function createObjStub(obj) { 
     return { 
     getDb: function() { 
     return { 
      collection: function() { 
       var coll = {}; 

       for (var name in obj) { 
       var func = obj[name]; 

       if (typeof func === 'object') { 
        coll = func; 
       } else { 
        coll[name] = func; 
       } 
       } 

       return coll; 
      } 
      }; 
     } 
     } 
    }; 
    // Stubbed mongodb call 
     var moduleSvc = new ModulesService(createObjStub({ 
     findById: function(query, options, cb) { 
      return cb({ 
      'name': 'test' 
      }, null); 
      //return cb(null, null); 
     } 
     }),{getProperties: function(){return{get: function(){} }; } }); 
+0

これはこれを行う方法の1つですが、MongoDBのチェック、制約、プロセスをすべて削除します。 一意のプライマリキーがある場合、2番目の書き込みはエラーを返しません。間違った情報の保存、間違ったクエリ、または間違った初期化がある場合、私は気付かないでしょう。 –

1

、あなたの統合テストのための本物のMongoDBのインスタンスを使用して引き続き検討します。詳細はthis nice articleをご覧ください。

関連する問題