我有一个lambda函数,该函数引用另一个文件中的模块定义。 不必在测试中正确设置所有场景,我只想拥有该模块的存根即可。 在app.js中
var Service = require("./Services/Service");
let service = new Service(event.Environment);
var regulatorResults = await service.GetModifiers(budgeted, irrelevant, variables);
服务定义如下:
function Service(environment) {
async function GetModifiers(ids, irrelevant, things) {
//logic happens
}
return { GetModifiers };
}
module.exports = Service;
我在测试中尝试了许多不同的迭代,但是我觉得最接近的是:
var assert = require('assert');
var sinon = require('sinon');
var service = require('../Services/Service');
describe('Calculator', function () {
before(function () {
var service = sinon.createStubInstance(regulatorService);
sinon.stub(service.prototype, "GetModifiers").callsFake(async function(IDs, thing, thing) {
return IDs.map(id=> new { ID: id, Modifier: 1 });
});
});
当我运行实际测试时,该服务的结果为[],即使我对存根进行了编码以返回一个设定值,并且即使我将它插入console.log中,也永远不会被击中。
测试失败,错误为Error: Trying to stub property 'GetModifiers' of undefined
。
感谢您的帮助!