【问题标题】:test --coverage throwing "Nothing was returned from render." error测试 --coverage 抛出“渲染没有返回任何内容。”错误
【发布时间】:2020-05-18 19:04:07
【问题描述】:

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

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

&lt;App /&gt;

✕ Render the application (28ms)

● &lt;App /&gt; › 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)

【问题讨论】:

  • npm 需要 -- 将其运行的脚本的参数和 npm 本身的参数分开,因此 npm test --coverage 将基本上忽略覆盖标志。我不明白为什么--coverage 会导致测试失败。
  • 谢谢。我重新安装了软件包,现在它按预期工作。我只做了 1 项额外更改(尽管与此错误无关)是将 @testing-library 包移动到 devDependencies。

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


【解决方案1】:

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

只需使用:

npm test --coverage --watchAll=false

【讨论】:

  • 这里我只添加了--watchAll = false 作为解决方案。 ?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-27
    • 2020-09-14
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2021-01-01
    • 2019-04-14
    • 1970-01-01
    相关资源
    最近更新 更多