使用Jasmine 3.3.0和Angular 7。
因此,我需要在it
规范内运行一些异步断言。问题是当我提供router.navigate
回调时,done
永远不会执行。我可以使用完全相同的代码,但是取出done
回调并执行router.navigate
。所有值都是我期望的值,但是Jasmine说它没有断言,因为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();
});
})();
});
})
});