Angular 7, Jest макет минимизированного импорта файлов - PullRequest
0 голосов
/ 24 января 2020

Я должен использовать сторонний минимизированный код в своем классе. Я недавно переключился на Jest и получаю некоторые действительно странные ошибки. Я предоставляю упрощенный код:

import MinifiedPackage from '../dist/minifiedPackage.min.js'
@Component ...
export class A {
  testedFunction:boolean {
    return MinifiedPackage.whatever();
  }
}

Мой тест для него выглядел бы так:

import MinifiedPackage from '../dist/minifiedPackage.min.js'
...
beforeEach(() => { 
  TestBed.configureTestingModule({
    declarations: [A],
    providers: [{provide: MinifiedPackage, useValue: {whatever: () => {}}]
  });
  .compileComponents().catch();
  fixture = TestBed.createComponent(A);
}

it('testing whatever', () => {
  spyOn(MinifiedPackage, 'whatever').and.callFake(() => false);
  component.testedFunction();
  expect(MinifiedPackage.whatever()).toHaveBeenCalled();
});

В этот момент я получал все записанное содержимое minifiedPackage и что ошибка где-то в файле (что, я думаю, имеет смысл, учитывая, что он пытается использовать этот оригинальный файл вместо того, с которым я пытаюсь его посмеяться).

После этого я попытался создать класс, который я отказался бы от тестирования и использовал бы его как фасад функциональности minifiedPackage. Это выглядит примерно так:

import MinifiedPackage from '../dist/minifiedPackage.min.js'
@Injectable()
export class MinifiedPackageService {
  static whatever:boolean = () => {
    MinifiedPackage.whatever();
  }
}

В тестах и ​​исходном классе я также изменил импорт на MinifiedPackageService, а также на провайдеров и шпионов. Проблема заключалась в том, что он жаловался, что моего метода не существует: <spyOn> : whatever() method does not exist. Я не контролирую сторонний минимизированный код, а также недоступен пакет npm. Есть идеи как это решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...