У меня есть лямбда-функция, которая ссылается на определение модуля в другом файле.Вместо того, чтобы получить все сценарии прямо в моих тестах, я хотел бы просто заглушить этот модуль.В 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
.
Спасибо за помощь!