После первых экспериментов с 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.
Ура, работает. Теперь можно, что-то осмысленно тестировать.