Почему Jest не запускает тесты, которые ссылаются на npm пакетов? - PullRequest
0 голосов
/ 19 июня 2020

Я создал новый проект с create-react-library . Я пытаюсь добавить модульный тест с помощью Jest и Enzyme. Мой тест работает для простого компонента, но Jest не может протестировать компонент, который ссылается на semanti c -ui-react .

Этот тест работает:

// src/VanillaComponent.test.js
import React from 'react';
import Enzyme, { shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

Enzyme.configure({ adapter: new Adapter() });

const VanillaComponent = () => <div>Test</div>;

test('Enzyme can render a vanilla component', () => {
  expect(shallow(<VanillaComponent />)).toBeDefined();
});

Этот тест выполняет не работает:

// src/SemanticComponent.test.js
import React from 'react';
import Enzyme, { shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import { Button } from 'semantic-ui-react';

Enzyme.configure({ adapter: new Adapter() });

const SemanticComponent = () => <Button>Test</Button>;

test('Enzyme can render a semantic-ui-react component', () => {
  expect(shallow(<SemanticComponent />)).toBeDefined();
});

Когда я запускаю npm test в приведенном выше тесте, я получаю следующую ошибку:

 ● Test suite failed to run

    Cannot find module 'semantic-ui-react' from 'SemanticComponent.test.js'

   > 4 | import { Button } from 'semantic-ui-react';
        | ^

Соответствующие части файла package.json (удалено много несвязанного содержимого):

{
  "scripts": {
    "test": "run-s test:unit test:lint test:build",
    "test:build": "run-s build",
    "test:lint": "eslint .",
    "test:unit": "cross-env CI=1 react-scripts test --env=jsdom",
    "test:watch": "react-scripts test --env=jsdom"
  },
  "peerDependencies": {
    "react": "^16.0.0",
    "semantic-ui-react": "^0.88.2"
  },
  "devDependencies": {
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.2",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-scripts": "^3.4.1"
  },
}

Как я могу запустить этот второй тест? Мне не хватает какой-то конфигурации Jest?

1 Ответ

0 голосов
/ 19 июня 2020

Проблема заключалась в том, что я ссылался на semantic-ui-react как на одноранговую зависимость в файле package.json. Я нашел этот ответ , который побудил меня добавить semantic-ui-react как взаимозависимость, так и зависимость разработчика. После внесения этого изменения тест работает нормально.

...