我是写测试用例的新手,尝试在react中上传文件时编写拖放事件。我已经通过几个链接,但仍然无法找到任何答案,它使用正常的React测试库。
代码如下:
<div
className={`dropzone ${isDragging ? "dragging" : ""}`}
onDragEnter={handleDragEnter}
onDragLeave={handleDragLeave}
onDragOver={handleDragOver}
onDrop={handleDrop}
>
<input
type="file"
id="input-file-upload"
className="inputFile"
data-testid="input-field"
onChange={handleFileInputChange}
/>
<label htmlFor="input-file-upload" id="label-file-upload">
<div>
<button
style={{ display: "block", margin: "auto" }}
onClick={handleButtonClick}
>
Add File
</button>
{selectedFile ? (
<p>Selected File: {selectedFile.name}</p>
) : (
<p>Drag and drop files</p>
)}
</div>
</label>
</div>
字符串
以下是dragEnter、dragOver和dragLeave事件:
const handleDragEnter = (e) => {
e.preventDefault();
setIsDragging(true);
};
const handleDragLeave = (e) => {
e.preventDefault();
setIsDragging(false);
};
const handleDragOver = (e) => {
e.preventDefault();
};
const handleDrop = (e) => {
e.preventDefault();
setIsDragging(false);
const file = e.dataTransfer.files[0];
setSelectedFile(file);
console.log(file);
};
型
下面是整个代码:(https://codesandbox.io/s/upbeat-glade-x9h48c?file=/src/index.js)有人能在拖放测试用例中帮助我吗?提前感谢!
1条答案
按热度按时间ccrfmcuu1#
您可以使用
fireEvent[eventName]
的RTL包。dataTransfer
:拖动事件具有dataTransfer
属性,该属性包含操作期间传输的数据。为了方便起见,如果在eventProperties
(第二个参数)中提供dataTransfer
属性,则这些属性将添加到事件中。使用
fireEvent.drop()
触发onDrop
事件处理程序。例如:
index.jsx
:字符串
index.test.jsx
:型
试验结果:
型
软件包版本:
型