作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有:
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
DocumentsLoaderSvc,
{ provide: MgrSvc, useClass: MockMgrSvc },
{ provide: URLLoaderSvc, useClass: MockURLLoaderSvcWhenData}
]
});
});
在具有其独特要求的“it”情况下,我如何用另一个 mock 覆盖 URLLoaderSvc?有没有像 TestBed.overrideProvider 这样的东西...现在,我在自己的“描述”中有每个 it 语句,有自己的 beforeEach。
最佳答案
也许您最好的选择是让模拟可配置以满足不同测试用例的需要。将其保留为实例并使用 useValue
而不是 useClass
let urlLoderSvc: URLLoaderSvc;
beforeEach(() => {
urlLoaderSvc = new URLLoaderSvc();
TestBed.configureTestingModule({
providers: [
DocumentsLoaderSvc,
{ provide: MgrSvc, useClass: MockMgrSvc },
{ provide: URLLoaderSvc, useValue: urlLoaderSvc }
]
});
});
现在在您的 it
测试用例中,您只需配置 urlLoaderSvc
实例即可执行任何您想要的操作。
关于unit-testing - Angular 2 单元测试 : How to override a single provider in TestBed (for unit tests for a service, 不是组件,具有服务依赖性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41146374/
我是一名优秀的程序员,十分优秀!