Почему это ключевое слово нужно, чтобы жасмин шпионил на работу? - PullRequest
0 голосов
/ 06 февраля 2019

У меня вопрос о том, что 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 не такая уж большая проблема, я 'Мне просто интересно, зачем это вообще нужно.

...