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

     2023-02-22     253

关键词:

【中文标题】如何在笑话测试中模拟 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,这就足够了。所以你返回你的代码对它的期望,其余的应该没问题。

【讨论】:

如何在 javascript 中模拟内部 JSON 对象?

】如何在javascript中模拟内部JSON对象?【英文标题】:HowtomocktheintrinsicJSONobjectinjavascript?【发布时间】:2018-08-2415:45:18【问题描述】:我想模拟在我的反应组件的componentDidMount方法中对JSON.parse的调用,但不知道如何实现它。我的... 查看详情

如何在实际依赖项上提升一个笑话依赖项模拟?

】如何在实际依赖项上提升一个笑话依赖项模拟?【英文标题】:Howtohoistajestdependencymockoveractualdependency?【发布时间】:2019-08-0820:54:34【问题描述】:我正在测试一个导入类LanguageStore的react-native组件。目前测试失败,因为组件正... 查看详情

笑话:如何取消模拟 index.js 文件中列出的组件?

】笑话:如何取消模拟index.js文件中列出的组件?【英文标题】:Jest:Howtounmockcomponentslistedinanindex.jsfile?【发布时间】:2016-08-3018:01:47【问题描述】:使用Jest对我的反应组件进行单元测试。我在src/components/index.js下列出了我的组件... 查看详情

笑话测试库 - 模拟拒绝承诺不能按预期在 useAsync() 中工作

】笑话测试库-模拟拒绝承诺不能按预期在useAsync()中工作【英文标题】:jesttestinglibrary-mockingrejectpromisenotworkingasexpectedforfunctionwithinuseAsync()【发布时间】:2021-09-0403:52:33【问题描述】:我在我的函数组件中使用useAsync()钩子。该组... 查看详情

如何在 Jest 测试中模拟 StatusBarManager.getHeight?

】如何在Jest测试中模拟StatusBarManager.getHeight?【英文标题】:HowtomockStatusBarManager.getHeightinJesttest?【发布时间】:2020-01-0509:12:56【问题描述】:我正在使用来自wix的expo34和react-native-ui-lib并且在为我的组件设置笑话测试时遇到问题... 查看详情

笑话:如何正确模拟节点模块?

】笑话:如何正确模拟节点模块?【英文标题】:Jest:Howtocorrectlymockanodemodule?【发布时间】:2018-12-3117:26:38【问题描述】:我想用Jest在ReactNative中模拟node_module\'ReactNativeKeychain\'。在docs之后,我创建了一个名为__mocks__的文件夹,... 查看详情

开玩笑;如何在字符串上测试 JSON.parse 会成功

】开玩笑;如何在字符串上测试JSON.parse会成功【英文标题】:jest;howtotestJSON.parseonastringwillsucceed【发布时间】:2018-09-0514:25:39【问题描述】:我正在为API编写单元测试。如果我这样做:constapiResponse:object=JSON.parse(body)expect(apiRespons... 查看详情

如何在 Vue 笑话测试中等待引导模式动画完成

】如何在Vue笑话测试中等待引导模式动画完成【英文标题】:HowtowaitforbootstrapmodalanimationtofinishinVuejesttest【发布时间】:2019-09-1823:11:44【问题描述】:是否可以在Vuejest测试中等待模态动画完成?我的问题是,当我单击按钮(button... 查看详情

如何从 VSCode 中的多个位置运行笑话测试

】如何从VSCode中的多个位置运行笑话测试【英文标题】:howtorunjesttestfrommultiplelocationsinVSCode【发布时间】:2020-07-1723:19:41【问题描述】:我设法在一定程度上模拟了typeorm,但现在我面临一个奇怪的问题,我将在这里说明。importmy... 查看详情

运行笑话测试时如何避免初始化firebase?

】运行笑话测试时如何避免初始化firebase?【英文标题】:HowdoIavoidinitialisingfirebasewhenI\'mrunningjesttests?【发布时间】:2021-07-0312:15:40【问题描述】:我正在为我的slackbot事件处理函数编写开玩笑的单元测试。我不测试与数据库的交... 查看详情

iPhone设备中的Json Parse错误,但在模拟器中正确

】iPhone设备中的JsonParse错误,但在模拟器中正确【英文标题】:JsonParseErroriniPhonedevicebutcorrectinsimulator【发布时间】:2017-06-0206:04:43【问题描述】:这是我的代码:letres=tryJSONSerialization.jsonObject(with:data!,options:.mutableContainers)as![[Stri... 查看详情

如何在使用 NestJs 的笑话测试用例中使用用户文档/用户模型

】如何在使用NestJs的笑话测试用例中使用用户文档/用户模型【英文标题】:HowdoIuseUserDocument/UserModelinjestTestcasesusingNestJs【发布时间】:2021-11-0915:11:48【问题描述】:我正在尝试使用带有开玩笑测试用例的nestjs向数据库添加实际... 查看详情

如何在 nunjucks 中使用 JSON.parse

】如何在nunjucks中使用JSON.parse【英文标题】:HowcanIuseJSON.parseinnunjucks【发布时间】:2018-05-0407:04:19【问题描述】:我在mongodb和express中获取数据,返回没有错误,但我想在.find的最终结果中使用JSON.parse,请参阅下面我是如何尝试... 查看详情

如何在异步笑话 test.each 案例中传入 done() 参数

】如何在异步笑话test.each案例中传入done()参数【英文标题】:Howtopassinthedone()parameteronanasyncjesttest.eachcase【发布时间】:2020-05-1309:04:12【问题描述】:我正在尝试编写一个测试异步方法的jest测试用例,我想传入done()参数,所以jest... 查看详情

如何使用酶、笑话和反应测试材料设计事件监听器

】如何使用酶、笑话和反应测试材料设计事件监听器【英文标题】:Howtotestmaterialdesigneventlistenerusingenzyme,jestandreact【发布时间】:2019-01-2017:15:22【问题描述】:我正在测试模拟函数(onAccept)的调用,该函数应在单击Accept按钮时执... 查看详情

如何模拟默认从另一个文件导入的笑话函数

】如何模拟默认从另一个文件导入的笑话函数【英文标题】:Howtomockjestfunctionimportingfromanotherfileasdefault【发布时间】:2019-08-2012:17:04【问题描述】:我的问题是关于如何模拟默认从另一个文件导入的jest函数。我要测试的是该组... 查看详情

笑话:模拟 RxJs 管道

...st:mockRxJspipe【发布时间】:2019-03-0302:36:42【问题描述】:如何模拟更复杂的RxJs行为(在NgRx的上下文中)?给定一个简单的组件(SomeComponent):exportclassSomeComponentimplementsOnInitfoo$:Observable<any>;bar$:Observable<any>;constr 查看详情

笑话:当同一个模块也有命名导出时,如何模拟默认导出组件?

】笑话:当同一个模块也有命名导出时,如何模拟默认导出组件?【英文标题】:Jest:HowtomockdefaultexportComponentwhensamemodulealsohasnamedexport?【发布时间】:2018-07-2715:41:23【问题描述】:我有一个ES6模块,它默认导出一个React组件类,... 查看详情