我的代码中有一个try/catch结构,当代码执行到catch
部分时,会遇到JSON.parse()。
catch(err){
JSON.parse(err.message)
}
代码可以正常运行,但是测试未通过。测试仅断言在try块中是否发生了某些事情。
try {
popUp.method(mockedUrl)
}
这个测试只是断言该方法已被调用,但它失败了,因为在JSON.parse()
阶段出现了错误。不知道如何存根来使其知道我传递给 JSON 的内容。
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(...)
err
时,它甚至什么都不显示。而当我使用console.log('hello')
时,它会显示。这让我感到困惑。猜测它不知道err
是什么。 - the venomJSON.parse(err.message)
有什么作用?它似乎没有做任何事情。请发布你正在测试的代码和测试,这样你的情况就更清楚了。你可以像其他方法一样模拟JSON.parse
,但这可能是错误的决定。 - Estus FlaskJSON.parse(thisNeedsMocking)
的内容,因为显然在 JSON 中有一个意外的标记。它正在解析我的错误消息,以便稍后可以对其进行处理。 - the venom