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

相关问题