Я должен использовать сторонний минимизированный код в своем классе. Я недавно переключился на 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. Есть идеи как это решить?