Angular2, тестирование и разрешенные данные: как проверить ngOnINit?
Я работаю с руководством по тестированию Angular2 и хочу написать тест для функции ngOnInit(). Один из раздела Routing руководства по программированию имеет следующий формат:
let org: Org = null;
ngOnInit(): void {
let that = this;
this.route.data
.subscribe((data: { org: Org }) => {
that.org = data.org;
});
}
Это выполняется через распознаватель, например:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Org> {
let id = this.authService.user.orgId;
return this.orgService
.getOrg(id)
.map(
(org: Org) : Org => {
if(org) {
return org;
} else {
// If the Org isn't available then the edit page isn't appropriate.
this.router.navigate(['/provider/home']);
return null;
}
})
.first();
}
Код работает нормально, но я не уверен, как написать тест для ngOnInit. Доступные мне примеры предполагают, что встроенный OrgService может быть заменен MockOrgService. Тем не менее, все, что у меня есть, это решатель.
В конце концов я выясню, как самостоятельно протестировать распознаватель. Есть ли какие-нибудь полезные тесты, которые я могу сделать с ngOnInit на основе резольвера?
Спасибо,
Джером.
Ответы
Ответ 1
Что такое поведение или метод ngOnInit
? Все, что он делает, - это присвоить значение org
при разрешении данных маршрута. Так что все, что вам действительно нужно проверить.
let routeStub;
beforeEach(() => {
routeStub = {
data: null
}
TestBed.configureTestingModule({
providers: [
{ provide: ActivatedRoute, useValue: routeStub }
]
})
})
it('should assign org when route is resolved', async(() => {
let org = new Org()
route.data = Observable.of(org)
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(component.org).toEqual(org)
})
}))
Ответ 2
Я пытался проверить ngOnInit() для компонента, и, к сожалению, принятый ответ не работал для меня. Тем не менее, это сделал:
describe('your test', () => {
beforeEach(async() => {
// set up your component as necessary
component.ngOnInit();
await fixture.whenStable();
});
it('should verify your test', () => {
// run your expectation
});
});