Layout.spec.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { render, unmountComponentAtNode } from 'react-dom';
  2. import { act } from 'react-dom/test-utils';
  3. import Layout from '../../layout/Layout';
  4. import { MuiThemeProvider } from '@material-ui/core/styles';
  5. import { theme } from '../../../styles/theme';
  6. let container: any = null;
  7. jest.mock('react-i18next', () => ({
  8. useTranslation: () => ({
  9. t: (key: any) => key,
  10. }),
  11. }));
  12. jest.mock('react-router-dom', () => ({
  13. useHistory: () => ({
  14. push: jest.fn(),
  15. }),
  16. useLocation: () => ({
  17. hash: '',
  18. pathname: '/use-location-mock',
  19. search: '',
  20. state: undefined,
  21. }),
  22. }));
  23. jest.mock('../../layout/GlobalEffect', () => {
  24. return () => {
  25. return <div id="global">{ }</div>;
  26. };
  27. });
  28. describe('Test Layout', () => {
  29. beforeEach(() => {
  30. container = document.createElement('div');
  31. document.body.appendChild(container);
  32. });
  33. afterEach(() => {
  34. unmountComponentAtNode(container);
  35. container.remove();
  36. container = null;
  37. });
  38. it('Test Render', () => {
  39. act(() => {
  40. render(<MuiThemeProvider theme={theme}><Layout /></MuiThemeProvider>, container);
  41. });
  42. expect(container.querySelectorAll('#global').length).toEqual(1);
  43. });
  44. });