开玩笑安装组件后发出警告,测试不是包装器

时间:2019-12-07 10:34:15

标签: reactjs jestjs enzyme

您好,我正在为组件编写测试,并且已成功安装该组件。它给我类似

的警告
session_client = dialogflow.SessionsClient()
event_input = dialogflow.types.EventInput()
query_input = dialogflow.types.QueryInput(event=event_input)
session_client.detect_intent(query_input=query_input)

下面是我的代码:

Component.test.js

  console.error src/setupTests.js:17
    Warning: An update to ReactFinalForm inside a test was not wrapped in act(...).

    When testing, code that causes React state updates should be wrapped into act(...):

    act(() => {
      /* fire events that update state */
    });
    /* assert on the output */

    This ensures that you're testing the behavior the user would see in the browser. Learn more at 
        in ReactFinalForm (at SalesTaxForm.component.js:53)
        in div (at Modal.component.js:41)
        in Transition (created by ForwardRef(Fade))
        in ForwardRef(Fade) (at Modal.component.js:40)
        in TrapFocus (created by ForwardRef(Modal))
        in div (created by ForwardRef(Modal))
        in ForwardRef(Portal) (created by ForwardRef(Modal))
        in ForwardRef(Modal) (at Modal.component.js:27)
        in Component (at SalesTaxForm.component.js:52)
        in SalesTaxForm (at salesTaxForm.test.js:36)
        in I18nextProvider (at salesTaxForm.test.js:35)
        in Provider (created by WrapperComponent)
        in WrapperComponent

Componnet.js

import React from 'react';
import { mount } from 'enzyme';
import { Provider } from 'react-redux';
import { act } from 'react-dom/test-utils';
import { I18nextProvider } from 'react-i18next';
import i18n from '../../../i18n';
import SalesTaxForm from './SalesTaxForm.component';
import taxTypes from '../../../mockData/taxTypes.json';
import configureStore from '../../../setUpMockStore';

const initialState = {};

const initialRecord = {
    id: 194,
    taxRate: 1.29,
    taxType: 5,
    taxNo: "87681 1522 RT0001",
    startDate: new Date(2011, 10, 30),
    endDate: new Date(2035, 10, 30)
};

const store = configureStore(initialState);
jest.mock('../../../store');

let wrapper;
const open = true;
const record = initialRecord;
const reloadData = jest.fn();
const setOpen = jest.fn(() => { });
const taxTypesMock = taxTypes;

const mountComponent = () => {
    return mount(
        <Provider store={store}>
            <I18nextProvider i18n={i18n}>
                <SalesTaxForm open={open} record={record} reloadData={reloadData}
                    setOpen={setOpen} taxTypes={taxTypesMock} />
            </I18nextProvider>
        </Provider>
    );
};


describe('SalesTaxForm', () => {
    it('should render the salesTaxForm', async () => {
        wrapper = mountComponent();
    });
});

在我的代码中,有validate函数是异步的,这导致了问题。任何人都可以帮助解决这个问题?预先感谢。

0 个答案:

没有答案