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

angular unit test - how to mock router.config.data

所以我的组件中有以下代码:

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 文件夹中的另一个组件到我的组件。 所以我需要模拟环境变量。

这就是我在规范文件中尝试的内容:

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

在 TestBed.configureTestingModule 进口:

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

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

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

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

像这样:

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