【发布时间】:2019-03-26 22:47:51
【问题描述】:
所以我在网上查看了很多问题,包括这个 https://github.com/angular/quickstart/issues/320 我被难住了......
我的代码设置方式是我的主要描述创建了我的测试平台组件,在这里我为活动路由设置了我的 mockParams,所以我们可以 this.route.queryparams.subscribe(..),我的问题是否我无法覆盖不同描述或“它”块中的值。
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [MyComponent],
imports: [RouterTestingModule
})],
providers: [
{ provide: ActivatedRoute, useValue: mockParams },
],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
}));
这是我在不同的 NESTED 描述块中添加覆盖的示例...
beforeEach(() => {
TestBed.overrideProvider(ActivatedRoute,
{useValue: newMockParams});
TestBed.compileComponents();
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
这几乎就像这根本不运行......如果我重新使用 mockParams 并更改值,新的模拟参数不会改变,那么它将改变原始描述中的值,我真的必须重新创建吗我在每个嵌套描述中的组件?当我唯一需要更改的是提供者时,我不得不这样做是不对的,我不确定此时 overrideProvider 会做什么!任何帮助将不胜感激!
【问题讨论】:
-
我在下面的回答有帮助吗?
标签: javascript angular unit-testing jasmine karma-jasmine