我为我的应用程序创建了一个数据库包装器,如下所示.为了测试,我显然想要替换实际的数据库.我可以创建一个嘲弄查询方法并捕获所有输入的新类,但是使用sinon.js似乎更合适,但是如何使用它?
是否应该使用sinon.js的模拟或存根功能?
是否应该使用sinon.js的模拟或存根功能?
wrapper = (function() { function wrapper() {} wrapper.db = require("database"); wrapper.prototype.insertUser = function(doc) { return this.db.query("INSERT INTO USERS..."); }; return wrapper; })();
解决方法
你可以同时使用这两个.
模拟器有一个预期的排序行为,如果不正确遵循,将给你一个错误.
一个Stub类似于一个模拟,但没有订单,所以你可以按照你想要的方式调用你的方法.
根据我的经验,你几乎不需要嘲笑.
他们都将替换你的方法一个空的方法,或一个关闭,如果你通过一个.
这将是这样的:
stub = sinon.stub(wrapper,'insertUser ',function () { return true; });
那么你添加的期望行为来检查是否发生了.
我喜欢使用Jasmine与Jasmine-Sinon检查测试.