You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:45:41