我有一个Angular 2应用程序,它使用路由器导航到不同的页面 . 我想测试路由是否正确地从一个组件到另一个组件,通过调用包含 this.router.parent.navigate
或"clicking" UI组件的函数来触发导航 .
First Question: Jasmine框架是一个很好的选择,可以测试这个,还是应该将Jasmine专门用于单独测试每个组件?
Second Question: 如果Jasmine能够或者是完成此类任务的不错选择,我该如何为我的组件创建一个测试,该组件包含在路由器中(当它在应用程序的根目录下完成时)并为此分配 RouteConfig
路径路由器?下面是我的代码尝试......但当然它失败了 .
describe('MyApp', () => {
beforeEachProviders(() => [Router]);
it('should have name property set', inject([Router], (router: Router) => {
let myApp = new MyApp(router);
expect(myApp).toBeDefined();
}));
});
1 回答
茉莉花框架将是一个不错的选择 . 可以将以下测试样本扩展到您的应用程序,以确保从一个组件到另一个组件正确完成路由(@ angular / router 3.4.7) .
我最近在我的个人博客上写了一篇关于此的文章:https://medium.com/burak-tasci/using-jasmine-framework-to-test-angular-router-b568a232efed
首先,让我们导入我们在此测试中需要的依赖项:
然后,让我们创建一个
TestBootstrapComponent
,其中包含router-outlet
- 用于引导测试应用程序;和TestComponent
.您不需要为每个路径创建不同的组件 . 虚拟测试组件绰绰有余 .
现在,您需要将这些组件导入到应用程序中 .
请记住组件只能由一个模块导入,您应该在那里创建
shared module
并导入组件 - 如果需要,可以由任何_2977761导入:然后,您需要提供
routes
:最后,是时候准备模块配置用于测试目的:
毕竟,测试跨页面的路线导航就像下面这样简单: