Я провожу модульное тестирование приложения 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();
}));
Тем не менее, Jasmine выдает эту ошибку при модульном тестировании функции:
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
Любые идеи?
Спасибо!
DomSanitizer
из провайдеров и вместоCommonModule
попробуйте использоватьBrowserModule
- person Poul Kruijt   schedule 31.05.2018BrowserModule
stackoverflow.com/questions/39438039/ - person Amit Chigadani   schedule 31.05.2018