【发布时间】: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();
});
});
- 当我在终端中执行
npm test --coverage时,没有问题。 - 当我在终端中执行
npm test -- --coverage时,出现以下错误 - 当我在终端中执行
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)
【问题讨论】:
-
npm 需要
--将其运行的脚本的参数和 npm 本身的参数分开,因此npm test --coverage将基本上忽略覆盖标志。我不明白为什么--coverage会导致测试失败。 -
谢谢。我重新安装了软件包,现在它按预期工作。我只做了 1 项额外更改(尽管与此错误无关)是将 @testing-library 包移动到 devDependencies。
标签: reactjs react-testing-library react-scripts