HVe*_*nom 8 javascript reactjs jestjs
我在我的组件中有这个选择器,其默认状态是'' (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);
});
Run Code Online (Sandbox Code Playgroud)
现在在为此编写单元测试用例时,我很快通过jest文档找到三个值中的任何一个的匹配器,但发现没有匹配器执行此操作
我甚至尝试使用|| (or)operator in toEqual和toBematcher,但是你猜对它没有用,是否有办法使它工作或者我应该一起跳过测试.
注意:我正在使用酶和开玩笑
Shu*_*tri 15
为了达到预期值之一,您可以反转比较并使用toContain类似方法对其进行测试
expect(addFeedForm.state().feedfrequency).toEqual('');
addFeedForm.simulate('change');
expect([6, 12, 24]).toContain(addFeedForm.state().feedfrequency)
Run Code Online (Sandbox Code Playgroud)
Tac*_*tex 11
该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]);
});
Run Code Online (Sandbox Code Playgroud)
实现这一点的另一种方法是在 Jest 的断言之外进行比较,并简单地期望它是真的:
expect(
addFeedForm.state().feedfrequency === 6 ||
addFeedForm.state().feedfrequency === 12 ||
addFeedForm.state().feedfrequency === 24
).toBe(true)
Run Code Online (Sandbox Code Playgroud)
Jest API 上没有匹配多个值的方法。
进行此检查的一种方法是使用正则表达式:
expect(String(addFeedForm.state().feedfrequency)).toMatch(/^6|12|24$/);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3963 次 |
| 最近记录: |