У меня вопрос о том, что Jasmine spyOn
не работает, если не используется ключевое слово this
.
У меня есть скрипт, который имеет 2 функции:
function fn1(){
return fn2()
}
function fn2(){
return 5;
}
Я хочудля проверки fn1
без вызова fn2
, поэтому я экспортирую обе функции в module.exports
, а затем spyOn
для имитации fn2
var myScript = require('...');
spyOn(myScript, 'fn2').and.callFake(function(){
return 15;
});
Проблема в том, что оригинальный fn2
по-прежнемузвонил (возвращает 5) и игнорирует шпиона. Однако , если я изменю реализацию fn1
на
function fn1(){
return this.fn2()
}
Тогда шпион сработает и вернется 15. Добавление this
не такая уж большая проблема, я 'Мне просто интересно, зачем это вообще нужно.