У меня есть следующий сценарий, сначала тестируемый класс, называемый utils.js:
var exports = module.exports = {};
[...]
var internalHelper = exports.internalHelper = function internalHelper(params) {
[...]
return A.library.promise();
}
[...]
var methodUnderTest = exports.methodUnderTest = function methodUnderTest(params) {
[...]
internalHelper(theParams)
.then(result => {
[...]
});
[...]
}
[...]
Соответствующий тестовый фрагмент выглядит следующим образом:
var internalHelperStub = sinon.stub(utils, 'internalHelper');
internalHelperStub.resolves({ any: 'response' });
Проблема в том, чтовызывается реальный метод, а не заглушка.
Есть пара очень похожих вопросов, которые не удовлетворены ответами:
Почему это нельзя сделать ???
Если для этого есть причина, какова правильная структура кода для служебного класса?
Я не вижу причины, по которой я должен разбивать свой код без необходимости, и я вижу причину, по которой это должно работать.
РЕДАКТИРОВАТЬ: Джеймс ответил на этот вопрос здесь , я держу свой ответ, поскольку он предоставляет объяснение и решение фрагмента кода.Предоставление модераторам SO помечать их как дубликаты, объединять или делать что-либо еще в этих случаях;)