角单元测试-如何模拟router.config.data

时间:2020-06-30 14:54:57

标签: angular unit-testing jasmine karma-jasmine

因此我的组件中包含以下代码:

constructor(private router: Router){}

ngOnInit(){
module = this.router.config[0].data['env'].module
}

现在使用Jasmine和Karma运行单元测试时,出现以下错误:

Cannot read property 'env' of undefined

基本上,config.data.env是一个环境变量,它从另一个组件到libs文件夹中的我的组件。 所以我需要模拟env变量。

这就是我在规格文件中尝试过的:

    const fakeData = {
        data: {
          env: {
            module: 'myModule',
          }
        },
    }

并在TestBed.configureTestingModule导入:

 imports: [
        RouterTestingModule.withRoutes(routes, fakeData),
]

withRoutes上的第二个参数是extraOptions,但这不起作用。

如何模拟环境变量并将其设置在router.config上? 谢谢!

1 个答案:

答案 0 :(得分:0)

routes变量中,将data属性附加到第一个元素,然后从fakeData中删除RouterTestingModule.withRoutes(routes, fakeData)

类似这样的东西:

const routes = [{ 
                  path: 'xyz', 
                  component: YourComponent, 
                  data: {
                    env: {
                      module: 'mockModule'
                    }
                  } 
                }];