Jest 匹配器匹配三个值中的任何一个

新手上路,请多包涵

我的组件中有这个选择器,它的默认状态是 '' (empty) 字符串,但是当 change 事件被触发时,用户可以选择三个值中的任何一个,即 6、12 或 24

 it("feedform testing the selector feed frequency for value of 6, 12, 24 ", () => {
  const addFeedForm = shallow(
    <FeedForm
      submitForm={() => {}}
      setFeedData={() => {}}
      formType="add"
      feedsubmit={{
        status: null,
        error: {
          formsubmitwarning: "",
          feedname: "",
          feedurl: "",
          feedposttype: "",
          feedfrequency: "",
          feedpost: "",
          feedhashtag: "",
          formloginid: ""
        }
      }}
    />
  );
  expect(addFeedForm.state().feedfrequency).toEqual("");
  addFeedForm.simulate("change");
  expect(addFeedForm.state().feedfrequency).toEqual(6 || 12 || 24);
});

现在,在为此编写单元测试用例时,我快速浏览了 Jest 文档,为这三个值中的任何一个找到匹配器,但没有找到匹配器。

我什至尝试在 toEqual || (or) toBe 匹配器中使用 --- 运算符,但正如你猜到的那样,它不起作用。有没有办法让它工作或者我应该一起跳过测试?

注意:我在 Jest 中使用酶

原文由 HVenom 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 342
2 个回答

为了成为预期值中的一个,您可以反转比较并使用 toContain 方法对其进行测试,例如

expect(addFeedForm.state().feedfrequency).toEqual('');
addFeedForm.simulate('change');
expect([6, 12, 24]).toContain(addFeedForm.state().feedfrequency)

原文由 Shubham Khatri 发布,翻译遵循 CC BY-SA 4.0 许可协议

jest-extended 库提供了一个 .toBeOneOf([members]) 匹配器:

 it("feedform testing the selector feed frequency for value of 6, 12, 24 ", () => {
  expect(addFeedForm.state().feedfrequency).toBeOneOf([6, 12, 24]);
});

原文由 TachyonVortex 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题