【问题标题】:TypeError: Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'TypeError:无法在“EventTarget”上执行“dispatchEvent”:参数 1 不是“Event”类型
【发布时间】:2021-02-25 00:53:56
【问题描述】:

我正在学习反应测试,现在我正在尝试为登录页面创建测试,不幸的是,我遇到了错误。

这是测试文件。

import React from 'react';
import { render, fireEvent } from '@testing-library/react';
import { BrowserRouter as Router } from 'react-router-dom';
import { act } from 'react-dom/test-utils';
import Login from 'pages/Auth/Login';
import '@testing-library/jest-dom/extend-expect'


// describe what we are testing.....
describe('Login Component', () => {
 
    it('renders the sign in page with a form submission', async () => {
        const { getByTestId, getByPlaceholderText, queryByTestId } = render(
            <Router>
                <Login />
            </Router>
          );

        await act(async () => {
          fireEvent.change(getByPlaceholderText('Business e-mail'), { target: { value: 'karl@gmail.com' } });
          fireEvent.change(getByPlaceholderText('Password'), { target: { value: 'password' } });
          fireEvent.click(getByTestId('sign-in'));
    
          expect(getByPlaceholderText('Email address').value).toBe('karl@gmail.com');
          expect(getByPlaceholderText('Password').value).toBe('password');
        });
      });
})

当我运行 npm test 时,我收到以下错误。

我需要什么来解决这个问题?

【问题讨论】:

    标签: javascript reactjs unit-testing jestjs react-testing-library


    【解决方案1】:

    没必要await act(async () =&gt; 试试这样:`

    it('renders the sign in page with a form submission', async () => {
        const { getByTestId, getByPlaceholderText, queryByTestId } = render(
            <Router>
                <Login />
            </Router>
          );
          fireEvent.change(getByPlaceholderText('Business e-mail'), { target: { value: 'karl@gmail.com' } });
          fireEvent.change(getByPlaceholderText('Password'), { target: { value: 'password' } });
          fireEvent.click(getByTestId('sign-in'));
    
          expect(getByPlaceholderText('Email address').value).toBe('karl@gmail.com');
          expect(getByPlaceholderText('Password').value).toBe('password');
      });
    

    `

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2015-04-23
      • 2015-08-18
      • 2015-12-07
      • 2018-01-26
      • 2023-03-04
      • 2018-04-01
      相关资源
      最近更新 更多