Jestjs Angular 7 Jest单元测试中的模拟路由器和Ngzone

Jestjs Angular 7 Jest单元测试中的模拟路由器和Ngzone,jestjs,angular7,ngzone,Jestjs,Angular7,Ngzone,我在组件类中使用了ngzone和router。 我的单元测试工作正常,但现在得到的错误无法读取未定义的toLowerCase()。 有谁能建议我如何同时模拟Ngzone和路由器。我使用测试床:) 只需使用组件和路由配置测试模块,然后从测试模块获取路由器实例,然后监视路由器。导航以使用自定义模拟实现 从“@angular/core/testing”导入{async,ComponentFixture,TestBed}; 从'@angular/Router'导入{Router}; 从“@angula

我在组件类中使用了ngzone和router。 我的单元测试工作正常,但现在得到的错误无法读取未定义的toLowerCase()。 有谁能建议我如何同时模拟Ngzone和路由器。

我使用测试床:)

只需使用组件和路由配置测试模块,然后从测试模块获取
路由器
实例,然后监视
路由器。导航
以使用自定义模拟实现


从“@angular/core/testing”导入{async,ComponentFixture,TestBed};
从'@angular/Router'导入{Router};
从“@angular/router/testing”导入{RouterTestingModule};
让组件:你的组件;
let夹具:组件夹具;
让路由器:路由器;
beforeach(异步(()=>{
TestBed.configureTestingModule({
进口:[
RouterTestingModule.withRoutes([
{path:,组件:YourComponent},
{路径:'**',重定向到:'},
]),
],
声明:[您的组件],
提供者:[],
}).compileComponents();
}));
在每个之前(()=>{
fixture=TestBed.createComponent(您的组件);
组件=fixture.componentInstance;
路由器=试验台。注入(路由器);
开玩笑
.spyOn(路由器“导航”)
.mock实现(()=>of(true).toPromise());
});