admin管理员组文章数量:1296456
I have a asp core project created with React template, trying to unit test a simple component with Jest snapshot and I am receiving below error.Can any one suggest how to fix it.
index.js
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { Button } from 'reactstrap'
const CloseHistoryButton = ({ onClick }) =>
<div className="d-flex justify-content-end">
<Button color="danger" size="sm" onClick={onClick}>
<FontAwesomeIcon icon="times" /> Close History
</Button>
</div>
export default CloseHistoryButton
CloseHistoryButton.test
import ReactDOM from 'react-dom';
import { shallow, mount, render } from 'enzyme';
import { cleanup } from '@testing-library/react';
import renderer from 'react-test-renderer';
import CloseHistoryButton from '../CloseHistoryButton/index';
import registerIcons from './../../../../icons/registerIcons';
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
Enzyme.configure({ adapter: new Adapter() });
// automatically unmount and cleanup DOM after the test is finished.
afterEach(cleanup);
registerIcons();
test('renders correctly', () => {
const tree = renderer.create(
<CloseHistoryButton />
).toJSON();
expect(tree).toMatchSnapshot();
});
Error Log:
expect(received).toMatchSnapshot()
New snapshot was not written. The update flag must be explicitly passed to write a new snapshot.
This is likely because this test is run in a continuous integration (CI) environment in which snapshots are not written by default.
Received value
<div
className="d-flex justify-content-end"
>
<button
aria-label={null}
className="btn btn-danger btn-sm"
onClick={[Function]}
>
<svg
aria-hidden="true"
className="svg-inline--fa fa-times fa-w-11 "
data-icon="times"
data-prefix="fas"
focusable="false"
role="img"
style={Object {}}
viewBox="0 0 352 512"
xmlns=""
>
<path
d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
fill="currentColor"
style={Object {}}
/>
</svg>
Close History
</button>
</div>
27 | <CloseHistoryButton />
28 | ).toJSON();
> 29 | expect(tree).toMatchSnapshot();
| ^
30 | });
31 |
32 | describe('Test Button component', () => {
at Object.toMatchSnapshot (src/features/FleetImport/Results/CloseHistoryButton/CloseHistoryButton.test.js:29:18)
› 1 snapshot failed.
Snapshot Summary
› 1 snapshot failed from 1 test suite. Inspect your code changes or re-run jest with -u
to update them.
Test Suites: 1 failed, 1 passed, 2 total Tests: 1 failed, 3 passed, 4 total Snapshots: 1 failed, 1 total Time: 4.338s Ran all test suites. npm ERR! Test failed. See above for more details.
I have a asp.net core project created with React template, trying to unit test a simple component with Jest snapshot and I am receiving below error.Can any one suggest how to fix it.
index.js
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { Button } from 'reactstrap'
const CloseHistoryButton = ({ onClick }) =>
<div className="d-flex justify-content-end">
<Button color="danger" size="sm" onClick={onClick}>
<FontAwesomeIcon icon="times" /> Close History
</Button>
</div>
export default CloseHistoryButton
CloseHistoryButton.test
import ReactDOM from 'react-dom';
import { shallow, mount, render } from 'enzyme';
import { cleanup } from '@testing-library/react';
import renderer from 'react-test-renderer';
import CloseHistoryButton from '../CloseHistoryButton/index';
import registerIcons from './../../../../icons/registerIcons';
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
Enzyme.configure({ adapter: new Adapter() });
// automatically unmount and cleanup DOM after the test is finished.
afterEach(cleanup);
registerIcons();
test('renders correctly', () => {
const tree = renderer.create(
<CloseHistoryButton />
).toJSON();
expect(tree).toMatchSnapshot();
});
Error Log:
expect(received).toMatchSnapshot()
New snapshot was not written. The update flag must be explicitly passed to write a new snapshot.
This is likely because this test is run in a continuous integration (CI) environment in which snapshots are not written by default.
Received value
<div
className="d-flex justify-content-end"
>
<button
aria-label={null}
className="btn btn-danger btn-sm"
onClick={[Function]}
>
<svg
aria-hidden="true"
className="svg-inline--fa fa-times fa-w-11 "
data-icon="times"
data-prefix="fas"
focusable="false"
role="img"
style={Object {}}
viewBox="0 0 352 512"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
fill="currentColor"
style={Object {}}
/>
</svg>
Close History
</button>
</div>
27 | <CloseHistoryButton />
28 | ).toJSON();
> 29 | expect(tree).toMatchSnapshot();
| ^
30 | });
31 |
32 | describe('Test Button component', () => {
at Object.toMatchSnapshot (src/features/FleetImport/Results/CloseHistoryButton/CloseHistoryButton.test.js:29:18)
› 1 snapshot failed.
Snapshot Summary
› 1 snapshot failed from 1 test suite. Inspect your code changes or re-run jest with -u
to update them.
Test Suites: 1 failed, 1 passed, 2 total Tests: 1 failed, 3 passed, 4 total Snapshots: 1 failed, 1 total Time: 4.338s Ran all test suites. npm ERR! Test failed. See above for more details.
Share Improve this question asked Nov 27, 2019 at 20:51 AuoAuo 4092 gold badges6 silver badges18 bronze badges3 Answers
Reset to default 13In your package.json script which runs the tests append -u
to update the snapshot while running the test like react-scripts test -u
. This should fix the snapshot test in CI.
Just explicitly pass it in your CI configuration, like:
- yarn test -- --coverage --updateSnapshot
Two solutions to the issue 1) remove cross-env CI=true from package.json OR 2) Setup the CICD to run the unit tests.--- To do this add a npm task within the build pipeline and select the option within the task as "custom" and provide the command as test
that should trigger the unit tests whenever there is a build triggered.
本文标签:
版权声明:本文标题:javascript - Jest React - New snapshot was not written. The update flag must be explicitly passed to write a new snapshot - Stac 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738419301a2085766.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论