我有一个单元测试,用于检查 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 - JSON.parse(string) 的匹配器 - 如何在运行匹配器之前调用 lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57480155/