Это проблема с областью действия функции, с которой вы сталкиваетесь.Функция myOtherFunciton()
, вызываемая из myFunction()
, отличается от mySampleFile.myOtherFunciton()
, как вы выяснили.Для исправления потребуется небольшой рефакторинг вашего исходного кода (вам не нравится, когда тестирование выставляет такие вещи?).Ниже я добавил несколько консольных журналов, чтобы было ясно, куда движется контекст выполнения во время тестирования.
Рекомендуемый рефакторинг:
(function() {
exports.myFunction = function() {
// do some thing and then make a call to MyOtherFunciton
console.log('inside myFunction');
exports.myOtherFunciton('a', 'b', 'c'); // scoped to exports, now can be mocked
// myOtherFunciton('a', 'b', 'c'); // <-- don't call it like this: scoped within IIFE
}
exports.myOtherFunciton = function(p1, p2, p3) {
console.log('inside original myOtherFunciton');
//do some stuff in here
}
// module.exports = {
// myOtherFunciton,
// myFunction
// }
})();
Вот рабочий StackBlitz , показывающийтест сейчас проходит.Нажмите на «консоль» под тестовым окном Жасмин, чтобы увидеть результат.
Надеюсь, это поможет.