如何正确模拟路由器?

时间:2017-09-14 12:27:50

标签: angular unit-testing karma-jasmine

我正试图在我的测试中模拟路由器。我按照this answer中给出的步骤进行了操作,但仍然出现错误

  

'无法读取null'

的属性'outlet'

这就是我的尝试:

beforeEach(async(() => {
        TestBed.configureTestingModule({
            imports: [RouterTestingModule.withRoutes([
                {path:'profile/login',component:ProfileLoginComponent}]
            )],
            declarations: [ ProfileLoginComponent ],
            providers: [
                FormBuilder,AuthModel
            ],
            schemas: [NO_ERRORS_SCHEMA]
        })
            .overrideComponent(ProfileLoginComponent, {
                set: {
                    providers: [
                        {provide: AuthModel, useClass: MockAuthModel}      
                    ],
                }
            })
            .compileComponents();
    }));

如果我在模板中使用 routerLink routerLinkActive 删除代码,那么测试用例就可以正常运行。我哪里出错?

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。我也在另一个post回答了这个问题。

  

我发现当routerLink指向a时会发生此错误   null变量。就我而言,我称之为favoriteUrl的财产   由于隔离测试,分配给routerLink的值为null   环境。所以我手动为该属性分配了一个值   beforeEach功能,这解决了问题,至少对我而言。

参考:https://stackoverflow.com/a/46342813/8558515