spyOnProperty () не смоделирует свойство в другом файле. js - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть js файл время выполнения. js:

define([], function() {
    return {
        get executionContext() { return "UNSUPPORTED_CONTEXT" },
        isFeatureInEffect: function(arg) {
            return true;
        }
    };
});

В основном время выполнения. js используется как модуль в других файлах js, импортировать его с помощью define. Он возвращает объект с свойством executeContext и метод isFeatureInEffect .

Теперь я хочу смоделировать свойство executeContext в моих тестах. Чтобы сделать это, я попытался:

//in spec file
spyOnProperty(runtime, 'executionContext', 'get').and.callFake(function(){ return "USERINTERFACE"});
console.log(runtime.executionContext);  // prints "USERINTERFACE" i.e. mocking is successful

При входе в тот же файл _spe c, в котором он подсматривается, runtime.executionContext имеет значение "USERINTERFACE" (кажется, что насмешка работает)

Но когда то же самое время выполнения. js импортируется как модуль в другом js файле, который тестируется скажем, третьим. js, при регистрации значения runtime.executionContext оно оказывается таким же, как определено во время выполнения. js и не возвращает смоделированное значение.

Выше было для насмешки над свойством. Однако при моделировании метода : при использовании spyOn (runtime, "isFeatureInEffect") для метода isFeatureInEffect, mocking работает нормально, а rutime.isFeatureInEffect () возвращает смоделированное значение даже в третьем. js

Что я должен сделать, чтобы получить смоделированное значение свойства runtime.executionContext в третьем. js также?

Заранее спасибо !!

...