I have a test file like so: (I am using create-react-app)
import React from 'react'; import ReactDOM from 'react-dom'; import App from './components/Calculator'; import { getAction, getResult } from './actions/' import {shallow} from 'enzyme'; import toJson from 'enzyme-to-json'; import Enzyme from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: new Adapter() }); it('renders without crashing', () => { const wrapper = shallow(<App />) expect(toJson(wrapper)).toMatchSnapshot(); }); it('displays the choosen operator', () => { const action = { type: 'GET_ACTION', operator: '+' }; expect(getAction("+")).toEqual(action) }) it('displays the typed digit', () => { const action = { type: 'GET_RESULT', n: 3 }; expect(getResult(3)).toEqual(action); }) it('checks that the clickevent for getNumber is called',() => { const clickEvent = jest.fn(); const p = shallow(<p data-n="1" onClick={clickEvent}>1</p>) p.simulate('click') expect(clickEvent).toBeCalled(); })
and a package.json:
{ "name": "my-app", "version": "0.1.0", "private": true, "dependencies": { "react": "^16.2.0", "react-dom": "^16.2.0", "react-scripts": "1.1.1" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", // "test": "react-scripts test --env=jsdom", "test": "jest", "eject": "react-scripts eject" }, "devDependencies": { "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", "enzyme-to-json": "^3.3.3", "jest": "^22.4.3" } }
when I run jest --updateSnapshot
I get:
command not found: jest
but jest is installed.
Advertisement
Answer
Jest
is installed, but is likely in your ./node_modules/.bin
directory. You can append that to your command ./node_modules/.bin/jest --updateSnapshot
. Since you already have jest
as a scripts
command in your package.json
you can also run it with npm test -- --updateSnapshot
. npm automatically adds ./node_modules/.bin
to your path.
update: Newer versions of yarn will resolve node module bin scripts, so you can also just run yarn jest {cmd}
and it should work.