我有一些React组件,在其中使用HTML拖放接口。
特别地,我监听一个组件上的dragover
事件,并使用DataTransfer对象设置x和y位置。然后,我在另一个组件上监听dragleave
事件,并从DataTransfer中检索x和y位置。
我正在使用Jest和Enzyme来测试我的组件。
如果我运行我的测试,我会得到这个错误:
Test suite failed to run
ReferenceError: DataTransfer is not defined
据我所知,Jest 中没有 Drag 接口,因此我需要对其进行模拟并(或许?)通过 Jest 全局变量(Jest globals)使其可用。
目前,我在我的 jest.config.js
中定义了 DataTransfer
并将其设置为全局变量,但我不确定这是否是最佳解决方案。
class DataTransfer {
constructor() {
this.data = { dragX: "", dragY: "" };
this.dropEffect = "none";
this.effectAllowed = "all";
this.files = [];
this.img = "";
this.items = [];
this.types = [];
this.xOffset = 0;
this.yOffset = 0;
}
clearData() {
this.data = {};
}
getData(format) {
return this.data[format];
}
setData(format, data) {
this.data[format] = data;
}
setDragImage(img, xOffset, yOffset) {
this.img = img;
this.xOffset = xOffset;
this.yOffset = yOffset;
}
}
const baseConfig = {
globals: {
DataTransfer: DataTransfer,
},
// other config...
};
module.exports = baseConfig;
在Jest中模拟Drag接口的最佳方法是什么?
dataTransfer
对象或DataTransfer
对象? - Sam Gomena