在角度测试或fakeAsync期间进行真正的路由器导航是否合适?

时间:2018-06-18 03:56:04

标签: angular angular-unit-test

在为路由编写角度单元测试时,是否可以使用实际值导航,或者我们应该使用fakeAsync进行路由器导航?

选项1

it('navigate to "home" takes you to /home', fakeAsync(() => {
        router.navigate(['home']);
        tick();
        expect(location.path()).toBe('/home');
 }));

选项2

it('navigate to "home" takes you to /home', () => {
        router.navigate(['home']).then(() => {
            expect(location.path()).toBe('/home');
        });
    });

1 个答案:

答案 0 :(得分:0)

  

通常,您测试组件,路由器,并且仅在以下情况下进行测试   组件在给定的位置以正确的地址导航   条件。

您可以使用像这样的茉莉花来创建一个mockRouter / spyRouter。

.document.querySelector("#ctl00_PlaceHolderMain_ClaimsLogonSelector option[value='Windows']").Click

然后您可以将其提供给测试模块。

const routerSpy = jasmine.createSpyObj('Router', ['navigate']);

您可以有一个这样的测试规范。(示例取自有角官方文档)

TestBed.configureTestingModule({
  providers: [
    { provide: Router,useValue: routerSpy }
  ]
});

详细了解Routing component testing