Жасмин не распознает Домсанитизер от Angular
Я тестирую приложение Angular 5 с помощью Jasmine. Я дошел до того, что мне нужно проверить функцию, которая опирается на DomSanitizer
:
loadImage() {
this.image = this.sanitizer.bypassSecurityTrustStyle(`url(${this.assetUrl})`);
}
Я проверил, что эта функция работает отлично, а это означает, что DomSanitizer
уже в конструкторе, и его синтаксис правильный.
Мой юнит тест выглядит следующим образом:
it('loads the Image', () => {
component.loadImage()
fixture.detectChanges();
expect(component.imageUrl).toBe('...');
});
Более того, DomSanitizer
является частью TestBed
providers
:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
CommonModule
],
declarations: [
MyComponent
],
providers: [
DomSanitizer
],
schemas: [ NO_ERRORS_SCHEMA ]
})
.compileComponents();
}));
Тем не менее, Жасмин выдает эту ошибку при модульном тестировании функции:
ERROR: 'Unhandled Promise rejection:', '_this.sanitizer.bypassSecurityTrustStyle is not a function', '; Zone:', 'angular', '; Task:', 'Promise.then', '; Value:', TypeError: _this.sanitizer.bypassSecurityTrustStyle is not a function
Есть идеи?
Спасибо!
0 ответов
Измените его на BrowserModule вместо CommonModule, а также DomSanitizer можно опустить:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
BrowserModule
],
declarations: [
MyComponent
]
schemas: [ NO_ERRORS_SCHEMA ]
})
.compileComponents();
}));