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