1 回答
TA贡献1825条经验 获得超4个赞
首先,在询问 StackOverflow 问题时,发布一个完全可运行的示例并说明所有依赖项是有意义的。基本上,我用了一个多小时试图测试这一点,因为两者都丢失了。
这是完全扩展的示例,仅包含两个主要对象的虚拟实现。
var sinon = require("sinon");
var sinonTest = require("sinon-test");
var test = sinonTest(sinon);
const Vehicle = {
find() {}
};
const Controller = {
index() {}
};
describe("index (get all)", function() {
let expectedResult, res, req;
beforeEach(function() {
res = {
json: sinon.spy(),
status: sinon.stub().returns({ end: sinon.spy() })
};
expectedResult = [{}, {}, {}];
});
it(
"should return array of vehicles or empty array",
test(function() {
this.stub(Vehicle, "find").yields(null, expectedResult);
Controller.index(req, res);
sinon.assert.calledWith(Vehicle.find, {});
sinon.assert.calledWith(res.json, sinon.match.array);
})
);
});
现在,对于您的问题,这就是您收到错误的原因。首先要测试的是:当我更新到最新版本的测试依赖项时,会不会出现这个bug?答案是,不,它不会出现。所以基本上,这是关于你使用sinon-test2.0 版,它与 Sinon 3 有一个兼容性错误。这是来自更新日志:
2.1.0 / 2017-08-07
==================
Fix compatibility with Sinon 3 (#77)
2.0.0 / 2017-06-22
==================
* Simplify configuration API (#74)
因此,鉴于已修复,并且正在使用下面的示例,测试完全可以运行:
mocha mytest.js
index (get all)
1) should return array of vehicles or empty array
0 passing (6ms)
1 failing
1) index (get all)
should return array of vehicles or empty array:
AssertError: expected find to be called with arguments
这里的错误当然不是真正的错误,而只是我没有完整实现控制器和车辆类的副产品。
添加回答
举报