我正在尝试为我的 Node 应用程序的部分内容编写单元测试。我正在使用 Mongoose 作为我的 ORM。
我搜索了很多关于如何使用 Mongoose 和 Node 进行测试的信息,但没有找到任何内容。这些解决方案/框架似乎都是全栈的,或者没有提到模拟的东西。
有没有办法可以模拟我的 Mongoose DB,以便我可以在测试中返回静态数据?我宁愿不必设置测试数据库并用每个单元测试的数据填充它。
有人遇到过这种情况么?
我也去寻找答案,最后来到了这里。这就是我所做的:
我开始使用mockery https://github.com/mfncooper/mockery#readme然后创建我自己的模拟模块,每个模型作为属性挂在它上面。这些属性包装了真实模型(以便测试代码存在子属性)。然后我重写我想要操作的测试方法,例如保存。这样做的好处是嘲笑可以撤销嘲笑。
but...
我不太关心撤消模拟来为每个模型编写包装器属性。所以现在我只需要我的模块并覆盖我想要操作的函数。如果出现问题,我可能会在单独的进程中运行测试。
在我的测试的安排部分:
// 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");
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)