diff --git a/package.json b/package.json
index ce53aa998..4e9383379 100644
--- a/package.json
+++ b/package.json
@@ -51,6 +51,7 @@
"node": ">=8.x"
},
"devDependencies": {
+ "@testing-library/react": "^12",
"@types/classnames": "^2.2.9",
"@types/enzyme": "^3.10.3",
"@types/jest": "^26.0.0",
diff --git a/tests/picker.spec.tsx b/tests/picker.spec.tsx
index c4d82ddaf..a42c197b1 100644
--- a/tests/picker.spec.tsx
+++ b/tests/picker.spec.tsx
@@ -8,6 +8,7 @@ import moment from 'moment';
import type { Moment } from 'moment';
import type { PanelMode, PickerMode } from '../src/interface';
import { mount, getMoment, isSame, MomentPicker } from './util/commonUtil';
+import { fireEvent, render } from '@testing-library/react';
describe('Picker.Basic', () => {
beforeAll(() => {
@@ -125,17 +126,14 @@ describe('Picker.Basic', () => {
it('fixed open need repeat trigger onOpenChange', () => {
jest.useFakeTimers();
const onOpenChange = jest.fn();
- mount();
+ render();
+ expect(onOpenChange).toHaveBeenCalledTimes(0);
for (let i = 0; i < 10; i += 1) {
- const clickEvent = new Event('mousedown');
- Object.defineProperty(clickEvent, 'target', {
- get: () => document.body,
- });
act(() => {
- window.dispatchEvent(clickEvent);
+ fireEvent.mouseDown(document.body);
});
- expect(onOpenChange).toHaveBeenCalledTimes(i + 1);
+ expect(onOpenChange).toHaveBeenCalledTimes(1);
}
act(() => {
jest.runAllTimers();
diff --git a/tests/range.spec.tsx b/tests/range.spec.tsx
index 70c597e50..15fb77cfe 100644
--- a/tests/range.spec.tsx
+++ b/tests/range.spec.tsx
@@ -9,6 +9,7 @@ import type { Wrapper } from './util/commonUtil';
import { mount, getMoment, isSame, MomentRangePicker } from './util/commonUtil';
import zhCN from '../src/locale/zh_CN';
import type { PickerMode } from '../src/interface';
+import { fireEvent, render } from '@testing-library/react';
describe('Picker.Range', () => {
function matchValues(wrapper: Wrapper, value1: string, value2: string) {
@@ -693,23 +694,15 @@ describe('Picker.Range', () => {
it('fixed open need repeat trigger onOpenChange', () => {
jest.useFakeTimers();
const onOpenChange = jest.fn();
- const wrapper = mount();
+ render();
- for (let i = 0; i < 10; i += 1) {
- const clickEvent = new Event('mousedown');
- Object.defineProperty(clickEvent, 'target', {
- get: () => document.body,
- });
+ expect(onOpenChange).toHaveBeenCalledTimes(0);
- const current = onOpenChange.mock.calls.length;
+ for (let i = 0; i < 10; i += 1) {
act(() => {
- window.dispatchEvent(clickEvent);
- wrapper.find('input').first().simulate('blur');
+ fireEvent.mouseDown(document.body);
});
- const next = onOpenChange.mock.calls.length;
-
- // Maybe not good since onOpenChange trigger twice
- expect(current < next).toBeTruthy();
+ expect(onOpenChange).toHaveBeenCalledTimes(1);
}
act(() => {
jest.runAllTimers();