【发布时间】:2020-01-14 15:45:44
【问题描述】:
我正在尝试创建一个模拟路由器对象并将其注入到 TestBed 配置中,但它不起作用。下面是配置:
let mockQuote: QuoteService = new QuoteService(null, null);
let mockOshcStore: OshcStore = new OshcStore(null);
let mockActivatedRoute: ActivatedRoute = new ActivatedRoute();
let mockRouter: Router = new Router(null, null, null, null, null, null, null, null);
//let mockRouter: RouterMock = new RouterMock();
//let router:Router;
TestBed.configureTestingModule({
providers: [
{
provide: QuoteService, useFactory: () => {
return mockQuote;
}
}, FormBuilder, AppStore,
{
provide: OshcStore, useFactory: () => {
return mockOshcStore;
}
},
{
provide: ActivatedRoute, useFactory: () => {
return mockActivatedRoute;
}
},
{
provide: Router, useFactory: () => {
return mockRouter;
}
},
HttpClient, QuoteCISLAdapter
],
declarations: [CreateQuoteComponent]
});
fixture = TestBed.createComponent(CreateQuoteComponent);
component = fixture.componentInstance;
上述方法在“ActivatedRoute”之前有效,但在到达路线时停止并给出:
TypeError: Cannot read property 'get' of null
at new Router (../packages/router/src/router.ts:406:30)
我也尝试了带有“RouterTestingModule”模块的导入数组,但也没有用。有什么想法可以创建一个安全的模拟路由器对象吗?
【问题讨论】:
-
@maxime1992,我试过这个,但我的组件参数说是 (?,?..then 这就是为什么我需要将它添加到提供程序中
标签: angular unit-testing testing router testbed