Рубрики
Без рубрики

Как настроить шутку и фермент, как босс

Фото Quino Al / Unsplashwhen Я начал писать тесты для моего приложения React Application, потребовалось ли у меня некоторые попытки, прежде чем я выяснил, как настроить мою среду тестирования, используя jest & Enzyme. В этом руководстве предполагается, что у вас уже есть приложение React Application с WebPack & Babel.

Когда я начал писать тесты для моего приложения React Application, это потребовало меня несколько попыток, прежде чем я понял, как настроить мою среду тестирования, используя Jest & Фермент Отказ В этом руководстве предполагается, что у вас уже есть приложение React Application с WebPack & варить . Мы продолжим оттуда.

Это часть серии статей, которые я написал. Я говорю о том, как создать приложение React для производства правильного и простого способа.

Прежде чем мы начнем, если в любое время вы чувствуете застрявшие, пожалуйста, не стесняйтесь проверять Репозиторий кода Отказ PR очень приветствуется, если вы чувствуете, что все могут быть улучшены.

Предпосылка

Вам необходимо установить узел для использования NPM (Manager Unode Package).

Первые вещи сначала создают папку под названием приложение Затем откройте свой терминал и войдите в это приложение Папка и тип:

npm init -y

Это создаст package.json Файл для вас. В вашем package.json Файл Добавить следующее:

{
  "name": "react-boiler-plate",
  "version": "1.0.0",
  "description": "A react boiler plate",
  "main": "src/index.js",
  "author": "Adeel Imran",
  "license": "MIT",
  "scripts": {
    "test": "jest",
    "test:watch": "jest --watch",
    "test:coverage": "jest --coverage --colors",
  },
  "devDependencies": {
    "@babel/core": "^7.0.0",
    "@babel/polyfill": "^7.0.0-beta.51",
    "@babel/preset-env": "^7.0.0-beta.51",
    "@babel/preset-react": "^7.0.0-beta.51",
    "babel-core": "^7.0.0-bridge.0",
    "babel-jest": "^23.4.2",
    "enzyme": "^3.3.0",
    "enzyme-adapter-react-16": "^1.1.1",
    "jest": "^23.4.2"
  }
}

Второе создайте папку под названием SRC В вашем приложение папка. SRC/App/ Папка – это то, где весь ваш реактивный код вместе с его тестом будет находиться. Но До этого давайте понять, почему мы сделали то, что мы сделали в нашем package.json файл.

Я поговорю о Скрипты в немного (обещание). Но до этого давайте узнаем, почему нам нужны следующие зависимости. Я хочу, чтобы вы знали, что идет внутри вашего Package.json. Итак, начнем.

@ Babel/Core Поскольку обычно используем WebPack для компиляции нашего React Code. Babel – это серьезная зависимость, которая помогает сообщить WebPack, как скомпилировать код. Это однократная зависимость для использования шума.

@ Babel/Polyfill Jest требует, чтобы вещь называлась Регенератор-время выполнения @ Babel/Polyfill приходит встроенный с ним и некоторые другие прохладные черты.

@ Babel/Preset-Env & @ Babel/Preset-React Для функций, таких как ES6 и реагирует, поэтому во время написания модульных тестов Jest Знает о ES6 синтаксис и Jsx.

Babel-Core Это в основном зависимость для Шума , как нам нужно Babel-Core для шума на работу.

Бабел-шутмай Поможет Вавилону понять код, который мы пишем в Шума

фермент Это библиотека утверждения, которая облегчает утверждение, манипулировать и пройти выходные данные реагирования компонентов.

Фермент-адаптер-реагирование-16 Адаптер/средняя посуда, чтобы помочь шутить с фермент

jest Jest – это тестовая библиотека, на которой мы будем работать наши тесты.

Вы можете взглянуть на очень простой пример голыми костными людьми классными людьми на jest. Он использует Babel, чтобы запустить простой тест здесь Отказ

Также, если вы хотите Настройка WebPack для React Это подробный прохождение о том, как я это сделал. Или вы можете просто пройти через все базу кода, которая использует основные голые кости структуры тому, что вам понадобится при настройке приложения React наряду с шумом/ферментом ( Starter-kit здесь ).

Давайте давайте создадим файл под названием jest.config.js В нашем главном приложение Папка и добавьте следующий код к нему. Я расскажу о том, что это делает немного.

// For a detailed explanation regarding each configuration property, visit:
// https://jestjs.io/docs/en/configuration.html

module.exports = {
  // Automatically clear mock calls and instances between every test
  clearMocks: true,

  // An array of glob patterns indicating a set of files for which coverage information should be collected
  collectCoverageFrom: ['src/**/*.{js,jsx,mjs}'],

  // The directory where Jest should output its coverage files
  coverageDirectory: 'coverage',

  // An array of file extensions your modules use
  moduleFileExtensions: ['js', 'json', 'jsx'],

  // The paths to modules that run some code to configure or set up the testing environment before each test
  setupFiles: ['/enzyme.config.js'],

  // The test environment that will be used for testing
  testEnvironment: 'jsdom',

  // The glob patterns Jest uses to detect test files
  testMatch: ['**/__tests__/**/*.js?(x)', '**/?(*.)+(spec|test).js?(x)'],

  // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
  testPathIgnorePatterns: ['\\\\node_modules\\\\'],

  // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href
  testURL: 'http://localhost',

  // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
  transformIgnorePatterns: ['/node_modules/'],
  
  // Indicates whether each individual test should be reported during the run
  verbose: false,
};

Второе создайте файл под названием enzyme.config.js В вашем главном приложение Папка и добавьте следующий код к нему.

/** Used in jest.config.js */
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

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

Давайте сначала поговорим о jest.config.js.

Clearmocks очистите все издевательства, так что издевательства в nth Тест не мутирует или не влияет на тест на N + 1 позиция.

CollectcoverageFrom Оказывает, что Jest собирать покрытие кода со всех файлов .js в SRC/ папка. Охват сообщает вам, какой процент кода охватывается вашими тестовыми случаями.

Coverageedirectory Рассказывает, что каталог охвата должен быть назван Охват В главном приложение/ папка.

Modulefileextensions Принимает в массиве расширений, которые сообщают, что это может проверить, какие файлы могут тестировать. Мы говорим, чтобы проверить все .js | .jsx | .json файлы.

setupfiles Это действительно важно, так как он говорит о том, как он говорит путь от того, где он может получить конфигурации для фермента (больше на это позже)

TestenVironment Указывает, какую среду шума проведет свою проверку, поскольку мы тестируем веб-приложение. Я установил окружающую среду в jsdom.

Testmatch Рассказывает, что файлы будут тестировать. Я прохожу в 2 конфигурациях здесь, один из которых тестируйте все файлы в любой папке с именем __tests__ или проверьте все файлы, которые заканчиваются spec.js | .jsx. или test.js | .jsx.

TestPathignOREPatterns Я не хочу, чтобы шутить, чтобы запустить тесты внутри моего Node_Modules папка. Поэтому я проигнорировал эти файлы здесь.

testurl Эта опция устанавливает URL для среды JSDOD. Это отражено в свойствах, таких как местоположение.href

TransformigneReorePatterns Массив монтажных строк RegexP, которые сопоставляются со всеми путями исходных файлов, соответствующие файлы будут пропускать преобразование. Здесь я даю это только один за node_modules.

Verbose Если true дает вам очень подробный журнал, когда вы запустите тесты. Я не хочу видеть это и сосредоточиться только на велом моих тестах. Поэтому я установил свою ценность в ложный

Давайте поговорим о enzyme.config.js.

Я передаю путь enzyme.config.js В моем setupfiles в шумах настраиваний. Когда он идет к этому файлу, шутки занимают ферментные конфигурации. Так что это означает, что все тесты будут работать на шуме. Но утверждения и все остальное будет сделано ферментом.

С этим на месте наши конфигурации сделаны. Давайте поговорим о скриптах:

"scripts": {    
    "test": "jest",
    "test:watch": "jest --watch",    
    "test:coverage": "jest --coverage --colors",  
},

NPM запустить тест Это будет запустить шутки и выполнять все тесты

Испытание NPM Run: смотреть Запустит все тесты и сохраняйте в режиме наблюдения, так что когда мы внесем какие-либо изменения в наши тестовые случаи, он снова выполнит эти тестовые случаи.

Испытание NPM Run: охват Создает отчет о покрытии, основанном на всех тестах, которые он выполняет, и предоставляет вам подробный отчет о покрытии в приложение/покрытие папка.

Прежде чем мы запустим тест, нам нужно создать один. Итак, начнем. В вашем Приложение/SRC/ Папка создает файл под названием Welcomessage.js Отказ

import React, { Fragment } from 'react';

const styles = {
  heading: {
    color: '#fff',
    textAlign: 'center',
    marginBottom: 15,
  },
  logo: {
    width: 250,
    heading: 250,
    objectFit: 'cover',
  },
};

const WelcomeMessage = ({ imgPath }) => {
  return (
    
      

Welcome To

app logo
); }; export default WelcomeMessage;

В той же папке создать файл под названием Welcomessage.test.js.

import React from 'react';
import { shallow } from 'enzyme';

// Components
import WelcomeMessage from './WelcomeMessage';

function setup() {
  const props = {
    imgPath: 'some/image/path/to/a/mock/image',
  };
  const wrapper = shallow();
  return { wrapper, props };
}

describe('WelcomeMessage Test Suite', () => {
  it('Should have an image', () => {
    const { wrapper } = setup();
    expect(wrapper.find('img').exists()).toBe(true);
  });
});

Одно следует отметить, что вы не сможете на самом деле запускать Welcommessage.js Файл, так как у вас нет WebPack Настройте с Бабел Отказ Если вы ищете способ установить это, проверьте мой учебник на Как объединить WebPack 4 и Babel 7, чтобы создать фантастическое приложение для реагирования Отказ Кроме того, если вы просто хотите исходный код в этот учебник, вот Репозиторий кода Отказ У него уже есть шутка и фермент. Не стесняйтесь сделать вилку и начать играть с базой кода.

Возвращаясь к коду, мы просто написали, в вашем терминале типа NPM запустить тест Отказ Он будет выполнять скрипт и находить все файлы, которые заканчиваются * .est.js и выполнить их. После того, как он выполнил, вы увидите такое сообщение:

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total

Теперь я знаю, что это не большая часть практического теста на единицу, но я хотел, чтобы этот учебник сосредоточиться на чисто настраивании шума и фермента.

Опять вот исходный код для этого Учебное пособие Отказ

Оригинал: “https://www.freecodecamp.org/news/how-to-set-up-jest-enzyme-like-a-boss-8455a2bc6d56/”