【发布时间】:2017-12-11 13:03:02
【问题描述】:
我有一个组件可以更新特定路由器事件的变量。如何进行单元测试以确保以下代码正常工作?
router.events.subscribe(event => {
if (event instanceof NavigationStart) {
this.isLoading = true;
} else if (event instanceof NavigationEnd || event instanceof NavigationCancel) {
this.isLoading = false;
} else if (event instanceof NavigationError) {
this.isLoading = false;
// console.error('effect error: ', error);
}
});
路由器存根
class MockRouter {
navigate = jasmine.createSpy('navigate');
start = new NavigationStart(0, '/home');
end = new NavigationEnd(1, '/home', '/dashboard');
events = new Observable(observer => {
observer.next(this.start);
observer.next(this.end);
observer.complete();
});
}
【问题讨论】:
-
跟进这个link你应该创建一个路由器存根
-
我可以让路由器存根工作,但我不确定如何更新 isLoading 变量
-
return true or false并检查组件变量 -
你能用一个简单的订阅者模拟 router.events 吗?没有。
-
@bhantol 那么有什么难的方法呢?
标签: angular unit-testing jasmine