forked from fanruan/fineui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.4 KiB
71 lines
1.4 KiB
const onetimeAfterEach = [] |
|
afterEach(() => { |
|
while(onetimeAfterEach.length > 0) { |
|
onetimeAfterEach.shift()() |
|
} |
|
}); |
|
|
|
function registeCloser(...f) { |
|
onetimeAfterEach.unshift(...f) |
|
}; |
|
|
|
function sleep(t) { |
|
return new Promise(resolve => setTimeout(() => { |
|
resolve() |
|
}, t)) |
|
}; |
|
|
|
function createWidget(widgetJson) { |
|
var widget = BI.createWidget(BI.extend(widgetJson, { |
|
root: true |
|
})); |
|
widget.element.appendTo("body"); |
|
registeCloser(() => { |
|
widget.destroy() |
|
}); |
|
return widget; |
|
}; |
|
|
|
/** |
|
* 模拟一次输入框的keydown事件 |
|
*/ |
|
function triggerKeyDown (element, value, keyCode, callback) { |
|
// keydown |
|
var e = BI.$.Event("keydown"); |
|
e.keyCode = keyCode; |
|
element.trigger(e); |
|
|
|
// input |
|
BI.isNotNull(value) && element.val(value); |
|
var e1 = BI.$.Event("input"); |
|
e1.originalEvent = {}; |
|
e1.keyCode = keyCode; |
|
element.trigger(e1); |
|
|
|
// keyup 至少等300ms后触发 |
|
var e2 = BI.$.Event("keyup"); |
|
e2.keyCode = keyCode; |
|
element.trigger(e2); |
|
BI.delay(function () { |
|
callback(); |
|
}, 300); |
|
}; |
|
|
|
/** |
|
* 模拟一次鼠标hover |
|
*/ |
|
function triggerMouseover(element, callback) { |
|
// keydown |
|
var e = BI.$.Event("mouseover"); |
|
element.trigger(e); |
|
callback && callback(); |
|
}; |
|
|
|
BI.Test = {}; |
|
BI.extend(BI.Test, { |
|
registeCloser, |
|
sleep, |
|
createWidget, |
|
triggerKeyDown, |
|
triggerMouseover |
|
}) |