Unit testing 测试Mongoose Node.JS应用程序
我正在尝试为我的节点应用程序的某些部分编写单元测试。我用猫鼬做我的ORM 我已经搜索了很多关于如何使用Mongoose和Node进行测试的内容,但没有找到任何内容。这些解决方案/框架似乎都是满栈的,或者根本没有提到模仿的东西 有没有办法模拟Mongoose DB,以便在测试中返回静态数据?我不希望设置一个测试数据库,并为每个单元测试填充数据Unit testing 测试Mongoose Node.JS应用程序,unit-testing,testing,node.js,mongoose,Unit Testing,Testing,Node.js,Mongoose,我正在尝试为我的节点应用程序的某些部分编写单元测试。我用猫鼬做我的ORM 我已经搜索了很多关于如何使用Mongoose和Node进行测试的内容,但没有找到任何内容。这些解决方案/框架似乎都是满栈的,或者根本没有提到模仿的东西 有没有办法模拟Mongoose DB,以便在测试中返回静态数据?我不希望设置一个测试数据库,并为每个单元测试填充数据 还有其他人遇到过这个问题吗?我通过稍微结构化代码来解决这个问题。我把所有与猫鼬相关的东西都放在单独的类中,这些类有“save”、“find”、“delete
还有其他人遇到过这个问题吗?我通过稍微结构化代码来解决这个问题。我把所有与猫鼬相关的东西都放在单独的类中,这些类有“save”、“find”、“delete”等API,没有其他类可以直接访问数据库。然后我简单地模拟那些依赖数据的测试
我对返回的实际对象做了类似的操作。对于mongoose中的每个模型,我都有一个相应的类来包装它,并提供对字段的访问方法。这些也很容易被嘲笑。我也去寻找答案,最后来到了这里。这就是我所做的: 我开始用它来模拟我的模型所在的模块。然后创建我自己的模拟模块,每个模型作为属性挂起。这些属性包装了真实的模型(以便测试中的代码存在子属性)。然后我重写了我想要为测试操作的方法,比如save。这样做的好处是嘲弄可以撤销嘲弄 但是 我真的不太关心撤销模拟以编写每个模型的包装器属性。所以现在我只需要我的模块并重写我想要操作的函数。如果出现问题,我可能会在单独的进程中运行测试 在我的测试安排部分:
// mock out database saves
var db = require("../../schema");
db.Model1.prototype.save = function(callback) {
console.log("in the mock");
callback();
};
db.Model2.prototype.save = function(callback) {
console.log("in the mock");
callback("mock staged an error for testing purposes");
};
同样值得一提的是:
-内存中模拟猫鼬的数据库,用于测试。
-类似,但采用不同的方法(实现假驱动程序)。Monckoose似乎在2015年3月尚未发布。你是用NodeJS做的吗?
schema.js
中有什么内容?@Michelle最有可能的是Monckoose模式定义你的第二个链接已经死了,它似乎已经未发布。