Matcher for 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 调用,并为成功和失败场景创建测试用例。

请参阅 https://www.npmjs.com/package/nock。

相关内容

最新更新