【发布时间】:2021-10-29 03:11:41
【问题描述】:
我在测试 Material-UI 选择选项时遇到问题。这里我已经尝试测试所有选项都加载到控件中。但是当我进行控制台日志调试时,它不会在选项元素上显示任何内容。
另外,我注意到菜单项呈现在 Material-UI 的页面底部。有没有特定的方法来获得这些?以下是我尝试过的代码,
ColorSelect.jsx
import React from 'react';
import { FormControl, MenuItem, Avatar, TextField } from '@material-ui/core';
import styled from "styled-components";
function ColorSelect(props) {
return (
<FormControl variant="outlined">
<TextField
id="color-id-input"
select
value={props.color}
label={props.color == "" ? "Color" : ""}
InputLabelProps={{ shrink: false }}
variant="outlined"
error={props.error}
helperText={props.helpertext}
>
<MenuItem style={{ fontSize: "13px" }} value="">
<em>None</em>
</MenuItem>
{
props.colors.map(color => (
<MenuItem key={"ColorNewLineMenuItem_" + color.colorCode} style={{ fontSize: "13px" }} value={color.colorCode}>
<div>
<Avatar key={"ColorNewLineAvatar_" + color.colorCode} src={color.imageSrc} />
<div>{color.name}</div>
</div>
</MenuItem>
))
}
</TextField>
</FormControl>
)
}
export default ColorSelect;
ColorSelect.test.js
import * as React from 'react';
import MockProvider from '../../mockProvider';
import * as data from '../../data/poData.json';
import { act } from '@testing-library/react';
import { mount } from "enzyme";
import ColorSelect from '../../../components/order/ColorSelect';
test("check colors dropdown loads correctly", async () => {
wrapper = mount(<MockProvider><ColorSelect color="" colors={data.products[0].colors} />
</MockProvider>);
await act(async () => {
wrapper.find({ 'id': "color-id-input" }).last().simulate("click")
});
wrapper.update();
console.log(wrapper.debug()) // Can't see the menu items
}
mockProvider.js
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import { Provider } from 'react-redux';
export default function MockProvider(props) {
const mockStore = configureMockStore([thunk]);
const store = mockStore({order: { status: 'SUCCEEDED', selectedPo: props.data, seletedProductIds: [], seletedLineItems: []}});
return <Provider store={store}>{props.children}</Provider>;
}
我的 poData.json 如下所示,
{
"id": "612a6a796cd84300df2f3263",
"products": [
{
"poProductID": "612a6ac9bd6c2079cdaae9f1",
"name": "AAAAA",
"colors": [
{
"colorCode": "1",
"name": "Pearl",
"imageSrc": "library/media-assets/2001/3001/3003.jpg"
},
{
"colorCode": "2",
"name": "Red",
"imageSrc": "/library/media-assets/2001/3009/3009.jpg"
}
]
}
]
}
这是日志显示的,
【问题讨论】:
-
您能否分享您的模拟提供程序和 poData 文件,以便我们重现此内容?
-
@diedu 我已经用 mockProvider 和 poData.json 更新了问题
标签: reactjs unit-testing jestjs material-ui enzyme