Reactjs 如何使用jest测试DOM事件
这是我的组件功能Reactjs 如何使用jest测试DOM事件,reactjs,react-redux,jestjs,Reactjs,React Redux,Jestjs,这是我的组件功能 componentDidUpdate() { this.addPlantListener(); } addPlantListener = () => { if (this.plantListener === undefined) { const ddl = document.getElementById('ddlSourcePlant'); Iif (ddl !== undefined && ddl !== n
componentDidUpdate() {
this.addPlantListener();
}
addPlantListener = () => {
if (this.plantListener === undefined) {
const ddl = document.getElementById('ddlSourcePlant');
Iif (ddl !== undefined && ddl !== null) {
this.plantListener = ddl;
ddl.addEventListener('mouseleave', this.closePlantDropdown);
}
}
}
closePlantDropdown = (dropdown) => {
dropdown.fromElement.click();
}
在方法内部调用的
componentDidUpdate() {
this.addPlantListener();
}
addPlantListener = () => {
if (this.plantListener === undefined) {
const ddl = document.getElementById('ddlSourcePlant');
Iif (ddl !== undefined && ddl !== null) {
this.plantListener = ddl;
ddl.addEventListener('mouseleave', this.closePlantDropdown);
}
}
}
closePlantDropdown = (dropdown) => {
dropdown.fromElement.click();
}
此处addEventListener再次从mouseleave事件调用
componentDidUpdate() {
this.addPlantListener();
}
addPlantListener = () => {
if (this.plantListener === undefined) {
const ddl = document.getElementById('ddlSourcePlant');
Iif (ddl !== undefined && ddl !== null) {
this.plantListener = ddl;
ddl.addEventListener('mouseleave', this.closePlantDropdown);
}
}
}
closePlantDropdown = (dropdown) => {
dropdown.fromElement.click();
}
我用它来测试这个笑话,这个函数在react js中
如何测试此功能,我无法测试addEvent侦听器和鼠标离开事件,任何人都可以建议一种实现此功能的方法。谢谢。:)
我的组件只是一个下拉列表
componentDidUpdate() {
this.addPlantListener();
}
addPlantListener = () => {
if (this.plantListener === undefined) {
const ddl = document.getElementById('ddlSourcePlant');
Iif (ddl !== undefined && ddl !== null) {
this.plantListener = ddl;
ddl.addEventListener('mouseleave', this.closePlantDropdown);
}
}
}
closePlantDropdown = (dropdown) => {
dropdown.fromElement.click();
}
目前我的测试方法是这样的
it('test method', () => {
const component = mount(h(SetSource, { ...props }));
component.instance().componentDidUpdate();
const ddl = component.find('#ddlSourcePlant');
** what goes here to test next lines and methods **
});
你目前的测试有什么问题?通常情况下,jest与jsdom一起提供,因此它不应该是一个问题。也许您只需要为测试启动document.body,否则它应该work@Axnyff我如何在一个测试中测试这个流,这里要断言的期望是什么