如何在Jest中编写支持多参数选项的测试用例?
解决Jest中
toBeCalledWith接受二选一参数的问题 你遇到的问题是因为JavaScript逻辑或运算符||的特性:'option1' || 'option2'会直接返回第一个真值'option1',所以Jest只会校验是否传入了这个值,无法识别“二选一”的逻辑。
以下是两种原生Jest的解决方案:
方法1:使用正则匹配器
利用expect.stringMatching结合正则表达式,精确匹配允许的两个参数:
expect(getFormSpy).toBeCalledWith(expect.stringMatching(/^option(1|2)$/));
正则^option(1|2)$确保只匹配option1或option2,不会误匹配类似option12的字符串。
方法2:直接检查Mock调用参数
获取Spy的调用记录,验证参数是否在允许的数组内:
// 获取第一次调用的第一个参数 const callArg = getFormSpy.mock.calls[0][0]; // 检查参数是否是二选一的值 expect(['option1', 'option2']).toContain(callArg);
如果需要校验多次调用的参数,可遍历mock.calls数组逐个检查。
内容的提问来源于stack exchange,提问作者ehuff
相关产品推荐
相关产品推荐

