如何在jest测试中模拟json.parse()



我的代码中有一个try/catch,当代码落入catch部分时,它会命中JSON.parse((

catch(err){
JSON.parse(err.message)
}

代码正在运行,但测试失败了。测试只是断言尝试中发生了一些事情

try {
popUp.method(mockedUrl)
}

测试只是断言调用了此方法,但它失败了,因为JSON.parse()阶段出现了问题。只是想知道如何将其截断,以便它知道我传递到json中的内容?

您可以模拟JSON.parse实现

JSON.parse = jest.fn().mockImplementationOnce(() => {
// return your what your code is returning.
});

一旦您不应该测试javascript内置对象:JSON,这就足够了。因此,您可以返回您的代码所期望的内容,其余内容应该都很好。

我不能发表评论,所以我将把它作为第二个答案发布。对于任何在一系列测试中使用它的人来说,这可能会更好:

jest.spyOn(JSON, 'parse').mockImplementationOnce(...)

JSON.parse只以这种方式被嘲笑过一次。进行

JSON.parse = jest.fn().mockImplementationOnce(...)

使JSON.parse在调用第一个实现后保持模拟状态。

相关内容

最新更新