gpt4 book ai didi

javascript - 在 React with Jest 中测试模拟表单输入

转载 作者:行者123 更新时间:2023-12-03 17:55:22 27 4
gpt4 key购买 nike

我正在使用 Jest 测试 React 组件的表单输入,但我无法找到使用 React TestUtils 选择表单输入字段以进行输入的最佳方法。在线文档显示了一个使用 refs 的示例,但 React 文档还声明 refs 应该只用在父组件上,而不应该用在组件的子组件上。我应该将 refs 附加到每个输入字段,还是有更好的方法遍历 DOM 并选择特定元素以便我可以在其上模拟点击事件?

这是我的渲染

render (
<form className="products">
<input onChange={this.handleName} name="name" type="text" />
<input onChange={this.hanndleAge} name="age" type="text" />
</form>
)

和我的测试

it('Should parse input fields', () => {
Product = TestUtils.renderIntoDocument(<ProductComponent />);

// This returns all the inputs but how do tell them apart?
let inputs = TestUtils.scryRenderedDOMComponentsWithTag(Product, 'input');
});

最佳答案

如果您想要使用引用的唯一原因是能够测试您的组件,则不应保存引用。

inputs 变量是一个规则的数组,里面有所有的结果,可以通过索引得到想要的结果。

it('Should parse input fields', () => {
Product = TestUtils.renderIntoDocument(<ProductComponent />);

// This returns all the inputs but how do tell them apart?
let inputs = TestUtils.scryRenderedDOMComponentsWithTag(Product, 'input');

let firstInput = inputs[0];
let secondInput = inputs[1];
});

在隔离组件的主要 DOM 元素(在您的情况下为 form)之后,您还可以使用常规浏览器 API 遍历 DOM 树:

it('Should parse input fields', () => {
Product = TestUtils.renderIntoDocument(<ProductComponent />);

let node = ReactDOM.findDOMNode(Product);

let firstInput = node.querySelector("[name=name]");
let secondInput = node.querySelector("[name=age]");
});

关于javascript - 在 React with Jest 中测试模拟表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135619/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com