Использование Jasmine 3.3.0 и Angular 7.
Поэтому мне нужно выполнить некоторые асинхронные утверждения в спецификации it
.Проблема в том, что router.navigate
никогда не выполняется, когда я предоставляю обратный вызов done
.Я могу использовать точно такой же код, но убрать обратный вызов done
и выполнить router.navigate
.Все значения соответствуют ожидаемым, но затем Жасмин говорит, что у нее нет утверждений, потому что операторы expect
выполняются после того, как тест уже выполнен.
Ниже приведен мой тест, который не работает.Что я делаю не так?
fdescribe('#PagesModule', () => {
describe('#Impersonate', () => {
fit('should allow DISTRICT_ADMIN.', (done) => {
inject([AuthGuard], (guard: AuthGuard) => {
const spy = spyOn(guard, 'canActivate');
store.dispatch(StoreActions.User.setCurrentUser(TestObjects.createUser(SystemRoles.DISTRICT_ADMIN)));
console.log('test'); // I see this in the console.
// this never executes??
router.navigate(['/pages/impersonate']).then((value) => {
expect(value).toBeTruthy();
expect(spy).toHaveBeenCalled();
expect(router.url).toBe('/pages/impersonate');
console.log('hello?');
done();
});
})();
});
})
});