2

我有一个类似于以下的 React 表单的 HTML5 文件类型输入

<input type='file' ref='fileInput' onChange={this.onChange} multiple/>

文件上传后this.onChange,访问选定的文件,验证它们并转换表单。

我试图弄清楚如何使用 ReactTestUtils.Simulate 测试此功能,但无法弄清楚如何设置应该发送到 event.currentTarget.files 中的 onChange 回调的文件。

任何人都可以帮助指导我如何有效地模拟/测试它吗?

4

1 回答 1

1

发现在调用 TestUtils.Simulate.change 之前,需要在对象上明确设置文件。类似于以下内容的东西应该可以工作。

它是从 Coffeescript 改编的 ES6,所以我不确定它的语法是否完全正确。

// Needs to be an integer keyed object instead of an array to mock a file set
const files = {
   0: {name: 'test.jpeg'},
   1: {name: 'test.mp4'}
};

const fileInput = TestUtils.findRenderedDOMComponentWithTag(<testView>, 'input');    
fileInput.files = files;
TestUtils.Simulate.change(fileInput)
于 2016-03-30T15:47:18.370 回答