- Published on
chokidarとPHPUnitでファイル変更時にテストを走らせる方法
前提環境
- composer
- yarn
- PHP 7.4 (バージョンは動作した環境ですが PHPUnit が動けば大丈夫かと)
- node.js 12 系
インストール
PHPUnit
$ composer require --dev phpunit/phpunit
chokidar
$ yarn add -D chokidar
初回設定
PHPUnit
PHPUnit の設定は各自で
composer.json
に追記
"scripts": { "test": [ "./vendor/bin/phpunit" ]},
chokidar.js
プロジェクトのルートに chokidar.js を作成
var { execSync } = require('child_process')var chokidar = require('chokidar')
// chokidarの初期化var watcher = chokidar.watch('./src/', { // 監視する対象によって書き換える ignored: /[\/\\]\./, persistent: true, usePolling: true, interval: 1000,})
watcher.add('./tests/') // 監視する対象によって書き換える
// イベント定義watcher.on('ready', function () { // 準備完了 console.log('ready watching...')
// ファイルの追加 watcher.on('add', function (path) { console.log(path + ' added.') runTest() })
// ファイルの編集 watcher.on('change', function (path, stat) { console.log(path + ' changed.') runTest() })})
function runTest() { try { var cmd = execSync('composer test') console.log(cmd.toString()) } catch (err) { console.log(err.stdout.toString()) }}
package.json に scripts を追加する
"scripts": { "test:watch": "node chokidar.js"}
実行
設定が完了したら下記のコマンドでファイル変更を監視して自動テストが走るようになる
$ yarn test:watch
参考
GitHub にもアップロードしてあります。