我认为fireEvent.click() 只会发出onClick,而userEvent.click() 会发出当用户clicks 发生时会发生的各种事件。
这是点击标签时触发的功能之一:
function clickLabel(label, init, {clickCount}) {
if (isLabelWithInternallyDisabledControl(label)) return
fireEvent.pointerDown(label, init)
fireEvent.mouseDown(
label,
getMouseEventOptions('mousedown', init, clickCount),
)
fireEvent.pointerUp(label, init)
fireEvent.mouseUp(label, getMouseEventOptions('mouseup', init, clickCount))
fireEvent.click(label, getMouseEventOptions('click', init, clickCount))
// clicking the label will trigger a click of the label.control
// however, it will not focus the label.control so we have to do it
// ourselves.
if (label.control) focus(label.control)
}
简而言之,fireEvent.click 是userEvent.click 中使用的步骤之一,还有更多步骤
你可以在这里阅读源代码:https://github.com/testing-library/user-event/blob/master/src/click.js
这里有更多来自源代码的代码,这些代码将在userEvent.click 上发生
function clickElement(element, init, {clickCount}) {
const previousElement = getPreviouslyFocusedElement(element)
fireEvent.pointerDown(element, init)
if (!element.disabled) {
const continueDefaultHandling = fireEvent.mouseDown(
element,
getMouseEventOptions('mousedown', init, clickCount),
)
if (
continueDefaultHandling &&
element !== element.ownerDocument.activeElement
) {
if (previousElement && !isFocusable(element)) {
blur(previousElement, init)
} else {
focus(element, init)
}
}
}
fireEvent.pointerUp(element, init)
if (!element.disabled) {
fireEvent.mouseUp(
element,
getMouseEventOptions('mouseup', init, clickCount),
)
fireEvent.click(element, getMouseEventOptions('click', init, clickCount))
const parentLabel = element.closest('label')
if (parentLabel?.control) focus(parentLabel.control, init)
}
}