javascript - JSON.parse(string) 的匹配器 - 如何在运行匹配器之前调用 lambda?
问题描述
我有一个单元测试来检查 fetch() 调用的字符串主体。
然而,这个测试有点脆弱,因为如果对象结构发生变化,就会试图查看两个巨大的字符串,看看有什么不同。
相反,我想改进此测试以检查通过调用 JSON.parse() 生成的对象是否等效于另一个对象,并可能通过检查某些对象子属性来链接它。
expect(global.fetch).toHaveBeenCalledWith(
'http://localhost:8080/api',
{
"body": JSON.stringify(expected_body),
"headers": {
"Content-Type": "application/json"
},
"method": "POST"
},
);
请注意,这并不是要求进行深度等于比较检查。我的问题实际上是关于如何在运行匹配器之前调用 lambda 函数。
对此进行测试的最佳方法是什么?
解决方案
您应该将 http 调用抽象为一个单独的模块或函数,该模块或函数返回您定义的对象。该对象将使用来自 Lambda 响应的解析 JSON 创建。然后,您可以使用一个库,例如nock
在单元测试中模拟您的 Lambda 调用,并为成功和失败场景创建测试用例。
推荐阅读
- javascript - 如何将 node-jose 与 jwt 令牌一起使用?
- c++ - find_if 和 bind2nd 等价于 lower_bound、upper_bound
- sql-server - 紧急联络人
- c# - Datagridview单元格值不相等但它们应该是c#
- ios - Firebase ionic iOS 错误 - [FIRApp isDataCollectionDefaultEnabled]:无法识别的选择器
- python - model.add(layers.MaxPooling1D(pool_size=3)) ^ SyntaxError: 无效语法
- javascript - 如何解决来自两个独立 Javascript 库的类型名称冲突?
- python - Numpy多维数组中任何轴上“真”值的最大数量
- r - 尽管准确率超过 99%,但随机森林模型产生了不正确的预测
- php - mysql 从同一个表中选择类别 e 子类别