我的代码中有一个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在调用第一个实现后保持模拟状态。