Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

command not found: jest

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 packaje.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.

enter image description here

like image 345
Aessandro Avatar asked May 02 '18 15:05

Aessandro


People also ask

What is the command to install jest?

Running from command line You can run Jest directly from the CLI (if it's globally available in your PATH , e.g. by yarn global add jest or npm install jest --global ) with a variety of useful options.

How do I start jest in terminal?

To access jest directly on the command line, install it via npm i -g jest-cli or yarn global add jest-cli . Then simply run your specific test with jest bar. spec.


Video Answer


2 Answers

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.

like image 162
CaptEmulation Avatar answered Sep 25 '22 22:09

CaptEmulation


I ran into similar issue. I fixed it by installing jest globally.

npm install -g jest 
like image 22
Sidd Thota Avatar answered Sep 26 '22 22:09

Sidd Thota