我查看了许多网上的问题,包括这个 https://github.com/angular/quickstart/issues/320 但我被困住了...
我的代码设置是,在我的主要描述中创建测试组件,我在这里设置了模拟参数以获取活动路由,所以我们可以使用this.route.queryparams.subscribe(...)。我的问题是,在不同的描述或'it'块中无法覆盖值。
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [MyComponent],
imports: [RouterTestingModule
})],
providers: [
{ provide: ActivatedRoute, useValue: mockParams },
],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
}));
以下是我在不同的嵌套描述块中添加覆盖的示例...
beforeEach(() => {
TestBed.overrideProvider(ActivatedRoute,
{useValue: newMockParams});
TestBed.compileComponents();
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
好像这个根本不起作用……如果我重复使用mockParams并更改值,那么新的模拟参数不会改变,它只会改变原始描述中的值。难道我真的必须在每个嵌套的描述中重新创建我的组件吗?当我唯一需要更改的是提供程序时,这感觉不对。我现在不确定overrideProvider到底是什么!任何帮助都将不胜感激!