【发布时间】:2019-10-25 13:22:23
【问题描述】:
我正在进行一个返回对象数组的 API 调用。然后我将这些对象映射到一个子组件上。我对如何测试这一点的想法是使用 Jest 模拟 API 调用并测试以查看渲染的子组件的数量是否等于对象的数量。我实际上不确定我是否需要模拟 API 调用,并认为只声明一个数组并使用它可能更简单。
这是我将用于 API 调用返回的数组示例。
let organizationRoles = [
{name : "2nd Project Manager", assigned : false},
{name : "Executive Sponser", assigned: false},
{name : "CFO or Finance Contact", assigned: false},
{name : "OI&T Contact", assigned: false},
{name : "Payroll Contact", assigned: false},
{name : "HR Contact", assigned: false}
]
这是我要运行的测试。
it('renders the appropriate number of cards', () => {
const wrapper = mount(<AssignRoles />);
const cardHolder = wrapper.find('#assign-roles-roles-page');
expect(cardHolder.children()).toHaveLength(organizationRoles.length)
})
我的主要问题是我还没有弄清楚在哪里注入数组。
这是我想从 AssignRoles 组件中测试的代码。
<div className={styles.rolesPage} id="assign-roles-roles-page">
{organizationRoles.map((roles, key)=> {
return(<AssignRolesCard name={roles.name} assignee={roles.assignee} id={key} handleFormOpen={handleFormOpen}/>)
})}
</div>
这里要求的是我的 API 调用:
axios
.get(URL, config)
.then(response => {
const organizationRoles = response.data;
})
.catch(error => {
if (error.response.status === 401 && token) {
this.renewToken();
}
});
我对 Jest 测试还很陌生,想了解如何在我的测试中更好地使用模拟。
【问题讨论】:
-
你能展示组件获取数据的实现吗?
-
@Teneff 您的意思是获取组织角色的 API 调用吗?我已更新我的问题以包含此内容。
标签: javascript reactjs testing jestjs enzyme