Javascript Jest matcher匹配三个值中的任意一个

Javascript Jest matcher匹配三个值中的任意一个,javascript,reactjs,jestjs,Javascript,Reactjs,Jestjs,我的组件中有一个选择器,其默认状态为“”(空)字符串,但当触发更改事件时,用户可以选择三个值中的任意一个,即6、12或24 it("feedform testing the selector feed frequency for value of 6, 12, 24 ", () => { const addFeedForm = shallow( <FeedForm submitForm={() => {}} setFeedData={() =

我的组件中有一个选择器,其默认状态为
“”(空)
字符串,但当触发
更改
事件时,用户可以选择三个值中的任意一个,即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);
});
it(“feedform测试选择器馈送频率的值为6、12、24”,()=>{
const addFeedForm=浅层(
{}}
setFeedData={()=>{}
formType=“添加”
feedsubmit={{
状态:空,
错误:{
formsubmitwarning:“”,
feedname:“”,
feedurl:“”,
feedposttype:“”,
馈电频率:“,
馈电线:“,
feedhashtag:“”,
formloginid:“
}
}}
/>
);
expect(addFeedForm.state().feedfrequency).toEqual(“”);
addFeedForm.simulate(“更改”);
expect(addFeedForm.state().feedfrequency).toEqual(6 | 12 | 24);
});
现在,在为此编写单元测试用例时,我快速浏览了Jest文档,找到了三个值中任何一个的匹配器,但没有找到这样做的匹配器

我甚至尝试在
toEqual
toBe
匹配器中使用
| |(or)
操作符,但正如您所猜测的那样,它不起作用。有没有办法让它起作用,或者我应该一起跳过测试


注意:我正在使用带Jest的酶

为了在期望值中选择一个,您可以反转比较并使用以下方法进行测试

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

Jest API上没有匹配多个值的方法

执行此检查的一种方法是使用正则表达式:

expect(String(addFeedForm.state().feedfrequency)).toMatch(/^6|12|24$/);

实现这一点的另一种方法是在Jest的断言之外进行比较,并简单地期望这是真的:

expect(
    addFeedForm.state().feedfrequency === 6 ||
    addFeedForm.state().feedfrequency === 12 ||
    addFeedForm.state().feedfrequency === 24
).toBe(true)
该库提供了一个匹配器:

it(“feedform测试选择器馈送频率的值为6、12、24”,()=>{
expect(addFeedForm.state().feedfrequency).toBeOneOf([6,12,24]);
});

这种方法的缺点是没有实际数据的断言会导致问题,同时会突出显示这些数据。