【问题标题】:how to mock json.parse() in jest tests如何在笑话测试中模拟 json.parse()
【发布时间】:2019-04-13 04:39:35
【问题描述】:

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

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

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

try {
   popUp.method(mockedUrl)
}

测试只是断言该方法已被调用,但它失败了,因为在JSON.parse() 阶段发生了一些事情。只是想知道如何将其存根,以便它知道我传递给 json 的内容?

【问题讨论】:

  • 你可以参考一下。 stackoverflow.com/questions/39193533/…
  • 这可能是 XY 问题。通常你需要模拟传递给 JSON.parse 的数据,而不是 JSON.parse 本身。
  • @estus 好的。但是当我在 catch 块中注销 err 时,它甚至没有向我显示任何内容。当我 console.log('hello') 显示时。这让我很困惑。猜它不知道err 是什么
  • @Xanax 使用的是 sinon 而不是开玩笑
  • 我不确定你的情况。您想模拟它以用于测试目的还是调试目的?您在哪里记录错误以及不显示的错误是什么?它完全是一个对象吗? JSON.parse(err.message) 有什么用途?它什么也没做。请发布您正在测试的代码和您的测试,这样您的案例可能会更清楚。您可以将 JSON.parse 模拟为任何其他方法,但有可能这是错误的决定。

标签: json reactjs parsing jestjs


【解决方案1】:

你可以模拟 JSON.parse 实现

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

一旦您不应该测试 javascript 内置对象:JSON,这就足够了。所以你返回你的代码对它的期望,其余的应该没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 2021-10-30
    • 2019-03-26
    • 1970-01-01
    • 2022-01-21
    • 2020-10-23
    • 2018-07-15
    • 2019-08-03
    相关资源
    最近更新 更多