gpt4 book ai didi

unit-testing - Angular 2 单元测试 : How to override a single provider in TestBed (for unit tests for a service, 不是组件,具有服务依赖性)?

转载 作者:太空狗 更新时间:2023-10-29 17:21:24 24 4
gpt4 key购买 nike

我有:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com