测试--coverage抛出“渲染未返回任何内容。”错误

时间:2020-05-18 19:04:07

标签: reactjs react-testing-library react-scripts

我正在测试一个简单组件的渲染。下面给出的是组件和测试规范的源代码。

App.js

import React from 'react';

export const App = () => {
  return (<div data-testid="application">Hello World</div>);
}

App.spec.js

import React from 'react';
import { cleanup, render } from '@testing-library/react';
import { App } from '../App';

beforeEach(cleanup); /* Clean the DOM */

describe('<App />', () => {
  test('Render the application', () => {
    const { queryByTestId } = render(<App />);
    expect(queryByTestId('application')).toBeTruthy();
  });
});
  1. 当我在终端中执行npm test --coverage时,没有问题。
  2. 在终端中执行npm test -- --coverage时,出现以下错误
  3. 在终端中执行yarn test --coverage时,出现以下错误

错误

FAIL src/__tests__/App.spec.js

<App />

✕ Render the application (28ms)

● <App /> › Render the application

App(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.

   7 | describe('<App />', () => {
   8 |   test('Render the application', () => {
>  9 |     const { queryByTestId } = render(<App />);
     |                               ^
  10 |     expect(queryByTestId('application')).toBeTruthy();
  11 |   });
  12 | });

  at reconcileChildFibers (node_modules/react-dom/cjs/react-dom.development.js:14348:23)
  at reconcileChildren (node_modules/react-dom/cjs/react-dom.development.js:16762:28)
  at mountIndeterminateComponent (node_modules/react-dom/cjs/react-dom.development.js:17542:5)
  at beginWork (node_modules/react-dom/cjs/react-dom.development.js:18596:16)
  at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:188:14)
  at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:237:16)
  at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:292:31)
  at beginWork$1 (node_modules/react-dom/cjs/react-dom.development.js:23203:7)
  at performUnitOfWork (node_modules/react-dom/cjs/react-dom.development.js:22157:12)
  at workLoopSync (node_modules/react-dom/cjs/react-dom.development.js:22130:22)
  at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:21756:9)
  at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21188:7)
  at updateContainer (node_modules/react-dom/cjs/react-dom.development.js:24373:3)
  at node_modules/react-dom/cjs/react-dom.development.js:24758:7
  at unbatchedUpdates (node_modules/react-dom/cjs/react-dom.development.js:21903:12)
  at legacyRenderSubtreeIntoContainer (node_modules/react-dom/cjs/react-dom.development.js:24757:5)
  at Object.render (node_modules/react-dom/cjs/react-dom.development.js:24840:10)
  at node_modules/@testing-library/react/dist/pure.js:86:25
  at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:21856:12)
  at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:929:14)
  at render (node_modules/@testing-library/react/dist/pure.js:82:26)
  at Object.<anonymous> (src/__tests__/App.spec.js:9:31)

2 个答案:

答案 0 :(得分:3)

如果禁用whatchAll,则测试不会失败,因此可以正确呈现。

只需使用:

npm test --coverage --watchAll=false

答案 1 :(得分:0)

我不得不将react-scripts从3.4.3版本降级到3.4.0