5

我正在爲使用MongoDB編寫的NodeJS應用程序編寫集成測試。如何在NodeJS中設置MongoDB進行集成測試?

在CI服務器上,我想擁有某種嵌入式MongoDB以獲得更快的性能和更輕鬆的控制。 目前我在其他服務器上有MongoDB,但測試速度很慢。在每次測試之前,我需要刪除所有集合。我使用貓鼬作爲ORM。

到目前爲止,我只找到嵌入式MongoDB for Java。

+0

你可以在你的CI服務器上設置一個專用的MongoDB實例... –

回答

0

我們的團隊一直在蒙鬆蒙皮電話。根據你的測試包,你可以做同樣的事情。它需要一點點工作,但它是值得的。創建一個存根函數,然後在你的測試中聲明你需要的東西。

// 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

這是一種可以完成的方式,但我會削減所有的MongoDB檢查,約束和進程。 如果存在唯一的主鍵,則第二次寫入不會返回錯誤。如果信息保存錯誤,查詢錯誤或初始化錯誤,我不會注意到這一點。 –

1

繼「不使用測試雙打類型你不擁有」的原則,考慮繼續使用真正的MongoDB實例進行集成測試。詳情請看this nice article

相關問題