我正在编写一个Jest测试来检查有效负载中是否存在<Demo payload={jsonpayload} Value="Item 1" />
value
。
这是我的测试文件的外观:
const payload= [
{
ItemName: "Item 1"
},
{
ItemName: "Item 2"
},
{
ItemName: "Item 3"
},
]
it("Has a value from one of the itmes in the json payload", () => {
const dropdown = enzyme.mount(<Dropdown {...DEMO_PROPS} />);
const value = dropdown.props().Value;
expect(payload.map(item => item.ItemName)).toEqual(value);
});
我知道我的测试是错误的,因为这会返回有效负载中的所有项目。我只想测试有效负载中是否存在value
。
我怎样才能做到这一点?
答案 0 :(得分:1)
使用some
代替map
some()为每个元素执行一次回调函数 数组,直到找到一个回调返回truthy值的数组(a 转换为布尔值时变为true的值)。如果这样的话 找到element,some()立即返回true。否则,一些() 返回false。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
const hasItem = payload.some(item => item.ItemName == value);
expect(hasItem).toBe(true);