diff --git a/tests/index.test.tsx b/tests/index.test.tsx
index 63e7771..a7a249e 100644
--- a/tests/index.test.tsx
+++ b/tests/index.test.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useRef } from 'react';
+import React, { useState, useRef, StrictMode } from 'react';
import { fireEvent, render, screen } from '@testing-library/react';
import Tour from '../src/index';
import { spyElementPrototypes } from 'rc-util/lib/test/domHook';
@@ -6,12 +6,24 @@ import { act } from 'react-dom/test-utils';
import { resizeWindow } from './utils';
describe('Tour', () => {
+ let spy: jest.SpyInstance;
+
+ beforeAll(() => {
+ spy = jest.spyOn(console, 'error').mockImplementation(() => {});
+ });
+
+ afterAll(() => {
+ spy.mockRestore();
+ });
+
beforeEach(() => {
+ jest.resetModules();
jest.useFakeTimers();
});
afterEach(() => {
jest.useRealTimers();
+ spy.mockReset();
});
it('steps in undefined', async () => {
@@ -277,7 +289,7 @@ describe('Tour', () => {
);
};
- const { rerender,baseElement } = render(
);
+ const { rerender, baseElement } = render(
);
expect(document.querySelector(`.rc-tour-arrow`)).toBeTruthy();
arrow = false;
@@ -473,16 +485,20 @@ describe('Tour', () => {
return (
-
-
+
+
{
target: () => btn2Ref.current,
mask: {
style: {
- boxShadow: 'inset 0 0 30px green'
+ boxShadow: 'inset 0 0 30px green',
},
- color: 'rgba(80,0,0,0.5)'
- }
+ color: 'rgba(80,0,0,0.5)',
+ },
},
]}
/>
@@ -508,10 +524,67 @@ describe('Tour', () => {
};
const { baseElement } = render();
- expect(baseElement.querySelector('.rc-tour-mask')).toHaveStyle('box-shadow: inset 0 0 80px #333');
- expect(baseElement.querySelectorAll('rect')[2]).toHaveAttribute('fill', 'rgba(255,0,0,0.5)');
+ expect(baseElement.querySelector('.rc-tour-mask')).toHaveStyle(
+ 'box-shadow: inset 0 0 80px #333',
+ );
+ expect(baseElement.querySelectorAll('rect')[2]).toHaveAttribute(
+ 'fill',
+ 'rgba(255,0,0,0.5)',
+ );
fireEvent.click(document.querySelector('.rc-tour-next-btn'));
- expect(baseElement.querySelector('.rc-tour-mask')).toHaveStyle('box-shadow: inset 0 0 30px green');
- expect(baseElement.querySelectorAll('rect')[2]).toHaveAttribute('fill', 'rgba(80,0,0,0.5)');
+ expect(baseElement.querySelector('.rc-tour-mask')).toHaveStyle(
+ 'box-shadow: inset 0 0 30px green',
+ );
+ expect(baseElement.querySelectorAll('rect')[2]).toHaveAttribute(
+ 'fill',
+ 'rgba(80,0,0,0.5)',
+ );
+ });
+ it('run in strict mode', () => {
+ const App = () => {
+ const [open, setOpen] = React.useState(false);
+ const btn1 = useRef(null);
+
+ return (
+
+
+
+
+
+ setOpen(false)}
+ steps={[
+ {
+ title: '创建',
+ description: '创建一条数据',
+ target: undefined,
+ },
+ {
+ title: '更新',
+ description: '更新一条数据',
+ target: () => btn1.current,
+ },
+ ]}
+ />
+
+
+ );
+ };
+ const { baseElement } = render();
+ fireEvent.click(baseElement.querySelector('.btn1'));
+ expect(baseElement).toMatchSnapshot();
+ fireEvent.click(screen.getByRole('button', { name: 'Next' }));
+ expect(baseElement).toMatchSnapshot();
+ fireEvent.click(screen.getByRole('button', { name: 'Finish' }));
+ expect(spy).not.toHaveBeenCalled();
});
});