我有:
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
DocumentsLoaderSvc,
{ provide: MgrSvc, useClass: MockMgrSvc },
{ provide: URLLoaderSvc, useClass: MockURLLoaderSvcWhenData}
]
});
});
如何在另一个模拟中覆盖URLLoaderSvc,在"它"案件有自己独特的要求吗?有没有像TestBed.overrideProvider这样的东西......现在,我在它自己的#34;描述"中有每个它的声明,并且有自己的beforeEach。
答案 0 :(得分:0)
也许你最好的选择是让模拟可配置以满足不同测试用例的需求。将其保留为实例并使用useValue
代替useClass
let urlLoderSvc: URLLoaderSvc;
beforeEach(() => {
urlLoaderSvc = new URLLoaderSvc();
TestBed.configureTestingModule({
providers: [
DocumentsLoaderSvc,
{ provide: MgrSvc, useClass: MockMgrSvc },
{ provide: URLLoaderSvc, useValue: urlLoaderSvc }
]
});
});
现在,在it
测试用例中,您可以配置urlLoaderSvc
实例以执行任何操作。
答案 1 :(得分:0)
您可以在需要的每个ts-mockery
中使用Mock.extend
和beforeEach
。这里的问题在于,此时的服务已被注入到组件中-重新提供它不会更新已经注入的实例。在这种情况下,您需要为每个测试创建一个夹具,在其中更改提供的实例。有了一个灵活的模拟实例会更容易,您可以在每次测试之前对其进行配置。
但是有时候是需要的,是的,例如,如果您有类似存储库服务的服务,需要http服务调用,并且需要测试此调用的成功,失败和阻塞,以确保回购服务正确响应