Angular 2:Unit Test,用于检查组件是否使用正确的参数调用路由器

时间:2017-09-08 19:00:00

标签: javascript angular jasmine angular2-routing

我有一个子组件,其模板由一个带有&#rou; routerlink'的按钮元素组成。在它上面有助于在点击该按钮时导航。按钮没有'(点击)'处理程序。只是路由器链接。

现在我在Jasmine中为这个组件编写单元测试,我想检查是否加载了正确的页面,或者当单击该按钮时组件使用正确的URL(下一页)调用路由器。基本上按钮看起来像这样:

<button routerLink="/a/b/c" id="JustAButton">

如何按顺序发送这些事件:

  • 点击按钮(请注意,该按钮没有&#39;(点击)&#39;与之关联。)
  • 检查网址是否已更改为&#39; / a / b / c&#39;或等效的东西,确保使用该URL调用路由器。

我已经按照herehere提到的所有不同情况进行了跟踪。他们都没有帮助。主要是因为我没有路由器出口&#39;在我正在测试的组件和我在该按钮单击上加载的组件。 (我也尝试在第二部分使用虚拟组件)

任何帮助将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:0)

如果没有代码示例,很难确切地知道你在测试什么但是...如果你确实只是担心测试路由是否被调用而你正在测试的单元是组件那么你应该使用模拟路由器像这样:

beforeEach(() => {
    const mockRouter = jasmine.createSpyObj('Router', ['navigate']);
    TestBed.configureTestingModule({
        imports: [HttpModule, RouterTestingModule],
        providers: [
            RouterTestingModule,
            {provide: XHRBackend, useClass: MockBackend},
            {provide: Router, useValue: mockRouter}
        ]
    });
});

然后你可以使用jasmine spies(在mockRouter上)查看你的单位调用的路由是否已被参数调用:https://jasmine.github.io/2.0/introduction.html#section-Spies