rin*_*o28 7 unit-testing reactjs jestjs material-ui react-testing-library
我正在尝试编写一个测试用例来断言在选择单选选项时禁用数字输入,并且在使用 React 测试库 utils 查询<input>
由 Material UI 呈现的HTML 时遇到问题<TextField>
。
此测试适用的组件中有两个<TextField>
实例,因此我尝试使用查询findAllByLabelText
,然后循环访问这些节点以确认禁用状态。
function OverridePriceModal () {
...
return (
<>
...
<TextField
type="number"
label="Custom Pricing"
value={regularPriceOverride}
onChange={evt => setRegularPriceOverride(evt.target.value)}
disabled={!isRegularPriceOverridden}
/>
...
<TextField
type="number"
label="Custom Pricing"
value={specialPriceOverride}
onChange={evt => setSpecialPriceOverride(evt.target.value)}
disabled={!isSpecialPriceOverridden}
/>
...
</>
);
}
Run Code Online (Sandbox Code Playgroud)
test('custom price inputs are disabled while following system pricing', async () => {
render(<OverridePriceModal />);
const priceInputs = await screen.findAllByLabelText('Custom Pricing');
_.forEach(priceInputs, input => {
expect(input).toBeDisabled();
});
});
Run Code Online (Sandbox Code Playgroud)
我希望通过标签文本找到输入节点,并将其禁用,从而通过测试。
我在测试输出中收到以下错误消息:
找到一个带有以下文本的标签:自定义定价,但未找到与该标签关联的表单控件。确保您正确使用“for”属性或“aria-labelledby”属性。
rin*_*o28 19
好吧,显然我所要做的就是使用堆栈溢出作为橡皮鸭,因为我立即就明白了..
id
只需将prop添加到<TextField>
.
除非您提供 prop,否则label
MUIinput
中的和TextField
不会与属性正确链接,如MUI TextField 文档的Accessibility部分所述。for
id
也许单元测试最终会迫使我采用最佳实践......
归档时间: |
|
查看次数: |
6042 次 |
最近记录: |