Шпионская функция жасмина из библиотеки Angular не работает - PullRequest
0 голосов
/ 11 марта 2020

У меня есть Angular библиотека, содержащая такие функции, как «export function myFunction».
Проект с ошибкой имеет эту библиотеку в качестве зависимости, и когда я хочу следить за функцией, появляется следующая ошибка:

myFunction is not declared writable or has no setter

Теперь пример из реального мира :

Простая функция из библиотеки:

export function isNotEmptyString(value: any): value is string {
  return _.isString(value) && !_.isEmpty(value);
}

Точки этой функции после упаковки:

export declare function isNotEmptyString(value: any): value is string;

Чтобы шпионить за функцией, в какой-то момент у меня должен быть объект.
Поэтому я использую импорт собственного модуля для достижения этой цели.

Шпион при ошибке:

import * as MyLibfrom 'my-lib';

const isNotEmptyStringSpy = spyOn(MyLib, 'isNotEmptyString').and.returnValue(false);

И ошибка:

isNotEmptyString is not declared writable or has no setter

Сейчас , если я использую spyOnPropety:

import * as MyLibfrom 'my-lib';

const isNotEmptyStringSpy = spyOnProperty(MyLib, 'isNotEmptyString').and.returnValue(() => false);

И новая ошибка:

isNotEmptyString is not declared configurable

Я также пытался использовать дифференцирующий модуль внутри tsconfig.json опции компилятора.
Как и commonjs, CommonJS, ES2015 и ESNext.
Разницы нет.

tsconfig. json

"compilerOptions": {
  "module": "commonjs"
}

У кого-нибудь есть предложения Ion?
Я застрял с этим: /

Спасибо!

Окружающая среда:

"karma": "4.4.1"
"jasmine-core": "3.5.0"
"@angular/core": "9.0.5"
...