如何在笑话测试中模拟 json.parse()
Posted
技术标签:
【中文标题】如何在笑话测试中模拟 json.parse()【英文标题】:how to mock json.parse() in jest tests 【发布时间】:2019-04-13 04:39:35 【问题描述】:我的代码中有一个 try/catch,当代码落入 catch
部分时,它会遇到 JSON.parse()
catch(err)
JSON.parse(err.message)
代码正在运行,但测试失败。测试只是断言尝试中发生了一些事情
try
popUp.method(mockedUrl)
测试只是断言该方法已被调用,但它失败了,因为在JSON.parse()
阶段发生了一些事情。只是想知道如何将其存根,以便它知道我传递给 json 的内容?
【问题讨论】:
你可以参考一下。 ***.com/questions/39193533/… 这可能是 XY 问题。通常你需要模拟传递给 JSON.parse 的数据,而不是 JSON.parse 本身。 @estus 好的。但是当我在 catch 块中注销err
时,它甚至没有向我显示任何内容。当我 console.log('hello')
显示时。这让我很困惑。猜它不知道err
是什么
@Xanax 使用的是 sinon 而不是开玩笑
我不确定你的情况。您想模拟它以用于测试目的还是调试目的?您在哪里记录错误以及不显示的错误是什么?它完全是一个对象吗? JSON.parse(err.message)
有什么用途?它什么也没做。请发布您正在测试的代码和您的测试,这样您的案例可能会更清楚。您可以将 JSON.parse 模拟为任何其他方法,但有可能这是错误的决定。
【参考方案1】:
你可以模拟 JSON.parse 实现
JSON.parse = jest.fn().mockImplementationOnce(() =>
// return your what your code is returning.
);
一旦您不应该测试 javascript 内置对象:JSON,这就足够了。所以你返回你的代码对它的期望,其余的应该没问题。
【讨论】:
以上是关于如何在笑话测试中模拟 json.parse()的主要内容,如果未能解决你的问题,请参考以下文章