Жасмин - асинхронные утверждения не вызывают router.navigate - PullRequest
0 голосов
/ 07 февраля 2019

Использование 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();
        });
      })();
    });
  })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...