Я тестирую функцию вызова ниже в угловом 4.
import { Component, OnInit } from '@angular/core';
import { AppService } from './app.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'jasmine-error-test';
constructor(private appService: AppService) { }
ngOnInit(): void {
this.call();
}
call() {
return this.appService.load().subscribe((res) => {
this.title = res;
}, (err) => {
throw new Error('Failed');
});
}
}
Чтобы проверить часть, где из-за подписки выдается ошибка, я делаю следующее.
describe('when call is called', () => {
describe('when the service returns an error', () => {
let app;
beforeEach(async(() => {
const fixture = TestBed.createComponent(AppComponent);
app = fixture.componentInstance;
(service.load as jasmine.Spy).and.returnValue(Observable.throw({
status: 406,
error: {
message: 'Test 406 error'
}
}));
}));
it('it should throw a matching error', async(() => {
expect(() => { app.call(); }).toThrowError('Failed');
}));
});
});
Но проверка не проходит с ошибкой
Expected function to throw an Error.
Если я использую окно отладчика, в нем отображается строка, в которую выдается ошибка, но я все равно не могу пройти тест. Может кто-нибудь дать мне знать, что происходит.