Ставим Jest


После первых экспериментов с PHPUnit решил внедрить тесты и в JavaScript модули для WordPress-плагина.

Фреймворков много Mocha, Jasmine, Jest… Я остановился на последнем — судя по статистике, он самый популярный в этой сфере.

Установка попила у меня много крови. Засада оказалась в том, что Jest не хотел работать с файлом, если стоял импорт esma-модуля import MyFormClass from '../form';.

В итоге. поставил с помощью полезной инструкции по методу B (локальная установка):

cd ./js

Создаю здесь файл package.json

{
    "scripts": {
        "test": "jest"
    }
}

Начинаю установку.

npm install jest --save-dev
npm install @babel/plugin-transform-modules-commonjs --save-dev

Создаю здесь же файл babel.config.js

module.exports = {
    env: {
      test: {
        plugins: ["@babel/plugin-transform-modules-commonjs"]
      }
    }
};

Создаю здесь же файл jest.config.js

module.exports = {
    "transform": {
      "^.+\\.[t|j]sx?$": "babel-jest"
    },
};

Файл package.json получается в итоге такой:

{
    "scripts": {
        "test": "jest"
    },
    "devDependencies": {
        "@babel/plugin-transform-modules-commonjs": "^7.18.6",
        "jest": "^28.1.3"
    }
}

Создаю папку tests, в которой размещаю файл первого теста form.test.js

import MyFormClass from '../form';

test('true to be true', () => {
    expect(true).toBe(true);
});

Запускаю тест на выполнение

npm run test

PASS  tests/form.test.js
  ✓ true to be true (4 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        1.708 s
Ran all test suites.

Ура, работает. Теперь можно, что-то осмысленно тестировать.