简体   繁体   中英

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

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.

You need to run it this way :

./node_modules/.bin/jest

or run npm test

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

npm install -g jest

Install the Jest command-line interface (Jest CLI):

npm install --save-dev jest-cli

Then run the jest command. Working for me in a linux instance by docker on Windows 10.

I was getting zsh: command not found: jest after installing jest and trying to use the command jest . The solution that worked for me was running npx jest

In my case, npm didn't install the jest command for some reason.

To fix this:

  1. I deleted the node_modules/jest directory
  2. Re-ran npm install and got the jest command installed.

just use command

npm test or npm t

A way to solve the error is to use the "npx" command.

npx jest --version


npx jest --init

删除 node_modules 并再次运行npm install为我解决了这个问题 “新的” npm ci命令也可以解决这个问题,因为它删除(或清除)节点模块并每次执行全新安装,而且与手动删除node_modules和重新安装相比,它更快安装

Just reload your bash config file after install jest:

source ~/.bashrc # on linux ?
source ~/.bash_profile # on macOs

Jest will be not recognized but executed with npx jest automatically

My situation was caused by my git pipeline. I wasn't caching node_modules nor was I caching untracked files.

Ultimately I added

cache:
  # untracked: true
  key:
    files:
      - package-lock.json
  paths:
    - node_modules

to my pipeline .yml and violá

Note

you can either use path OR untracked , find out more about each to see what works best for you

you can run ln -s ./node_modules/.bin/jest jest and then run jest --init it will work. Or you can install jest cli with npm install --save-dev jest-cli and then run jest --init it will also work.

In my case, I was trying to install jest with yarn on a pipeline to run tests and since I had jest installed as a devDependency it wasn't installing on yarn install.

I found this bug on GitHub https://github.com/yarnpkg/yarn/issues/2739 that it seems that Yarn will not install devDependencies when NODE_ENV=production.

I just needed to change the NODE_ENV and after that, it was working, otherwise, run it like this:

yarn install --production=false

You can run the test using npx jest [parameters] . npx is the package runner. It will help you execute a locally installed package.

I use yarn . Adding jest and jest-cli to node_modules did not make any difference with my attempts to run tests like jest mytest.test.js . In addition to mentioned steps, the following helped to get it running:

yarn jest mytest.test.js

try using the command

npx jest <folder>

I ran into the same problem. I tried multiple solutions and this worked.

I also have jest CLI installed

you can install it by using this command in your shell

npm install --save-dev jest-cli

Had the same issue and was able to solve it by running npm install

Faced the same issue. But it was due to the wrong node version. If you use the latest jest v29 , you need Node version 14 or higher.

Alternatively, just add jest module to package.json dependencies.

{
  "dependencies": {
    ...
    "jest": "^29.3.1",
    ...
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM