Angular Jest测试,并在一个测试套件中使用两个存根



我必须覆盖测试分支,并且我需要使用两个存根,那么我该如何实现呢?

我试着在TestBed中设置我的StubOne。。。

TestBed.configureTestingModule({
providers: [
{ provide: MyService, useValue myStubOne }
]
}).compileComponents()

然后在我的单品测试中更新它:

it("should work", () => {
Testbed.ovverideProvider(MyService, myStubTwo)
})

但它不起作用。当我想在两个单独的测试中使用两个不同的存根时,我应该怎么做?

我认为您可能有几个选项。首先,对服务的调用可以多次mockImplementationOnce((,因此每个返回都有不同的值。您在同一文件中的测试是按顺序运行的,因此您可以根据需要安排返回。

mock实现也可以使用参数(如果在原始调用中使用(来根据需要简单地返回数据。resolveOnce等也会有所帮助。

由于Jest并行运行测试,并且您正在使用服务的存根来测试您的代码是否正常工作,因此您也可以将测试分离在好的名称文件中。这将允许它们并行运行(提高测试速度(,并且仍然将类似的测试分组在一起。

另一种选择是简单地将两个块放在同一个文件中,并在两个不同的描述块中使用完整的beforeEach。

最新更新