【发布时间】:2021-09-21 19:19:21
【问题描述】:
我正在尝试为菜单列表编写断言,该列表在完全填充表达式条件并排序后呈现:
{packageFamilyId &&
packageMap[packageFamilyId] &&
packageMap[packageFamilyId].sort(Constants.sortAlphabeticallyAscending)
.map((p) => (
<MenuItem value={p.id} key={p.id} data-test="package-menu">{p.name}</MenuItem>
}
我将道具传递为:
const props = {
packageFamilyId: 1,
packageMap: [
{
packageFamilyId: [],
},
{
packageFamilyId: [
{
active: true,
code: "0",
id: 121,
is_price_applicable: false,
name: "ctest_name",
typeId: 2,
},
{
active: true,
code: "0",
id: 121,
is_price_applicable: false,
name: "btest_name",
typeId: 2,
},
{
active: true,
code: "0",
id: 121,
is_price_applicable: false,
name: "atest_name",
typeId: 2,
}
],
},
],
};
import React from "react";
import { shallow } from "enzyme";
import { componentName } from "./componentName ";
import componentNameMock from "../../../test/mockData/componentName";
describe("componentNameComponent", () => {
const wrapper = shallow(<component {...props} />);
const menuList = wrapper.find("[data-test='package-menu']");
expect(menuList .length()).toEqual(1);
});
但它给了我类型错误: TypeError: packageMap[packageFamilyId].sort 不是函数
packageMap[packageFamilyId] &&
packageMap[packageFamilyId]
.sort(Constants.sortAlphabeticallyAscending)
.................................................. ..................................... 其中 Constants.sortAlphabeticallyAscending 是排序函数
sortAlphabeticallyAscending: (a, b) => {
if (a !== undefined && b !== undefined) {
if (a.name?.toLowerCase() < b.name?.toLowerCase()) return -1;
else if (a.name?.toLowerCase() > b.name?.toLowerCase()) return 1;
else return 0;
}
}
【问题讨论】:
-
packageFamilyId是1但数组中只有一项,因此sort()不是undefined的函数 -
感谢回复,修改了代码,没有影响,按名称对对象列表进行排序,可以查看修改代码,错误依旧
标签: reactjs unit-testing jestjs enzyme