gulp를 사용하여 phpunit을 자동화 할 때 빠졌습니다.

개요



vim 사용하면서도 php의 개발을 효율화하고 싶다!
코드 수정하고 phpunit를 움직이는 것이 다르다고 생각하고 gulp를 사용하여 자동화해 보았습니다.

요구사항



개발하면서 동적으로 여러 번 테스트가 실행되는 환경을 만들고 싶다.

이번 주저한 점



왠지 일단 phpunit가 실행되면, 2회째 이후 phpunit가 실행되지 않는다.
gulp-plumber를 사용하거나 하는 기사는 보이고 시험하거나는 해 보았습니다만,
잘 작동하지 않습니다. . .
확실히 더 좋은 해결책이 있을지도 모릅니다만, 같은 문제로 망설이는 분이 있으면 생각하고,
투고하겠습니다.

환경


php -version
PHP 7.1.23 (cli) (built: Nov  7 2018 18:20:35) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

node --version
v11.12.0

준비



필요한 module 넣기


npm i --save gulp gulp-notify gulp-phpunit

gulpfile.js 작성


'use strict';
var gulp = require('gulp');
var notify = require('gulp-notify');
var phpunit = require('gulp-phpunit');

gulp.task("test",function(){
    gulp.src('tests/*.php')
        .pipe(phpunit('vendor/bin/phpunit'))
        .on('error', notify.onError({
            title: "Gulp PHP Unit",
            message: "Error(s) occurred during testing..."
        }))
        .pipe(notify({
            title: "Gulp PHP Unit",
            message: 'Successfully ran test!'
        }));
});

gulp.task('watch',function(){
    gulp.watch(['src/**/*.php', 'tests/**/*.php'], gulp.task('test'));
});

실행


gulp watch

결과



화질 거칠고 죄송합니다. . . (테스트 코드를 다시 쓸 때 phpunit이 작동하는지 확인합니다)


문제점



한 번 테스트를 실행하면 거기에서 멈 춥니 다. . .
이것이라고 하고 싶은 것과는 다르다. . .
하고 싶은 것은 개발하면서 몇 번이라도 phpunit을 실행해주는 느낌.

해결책



chokidar 사용
입니다.

chokidar의 install


npm i --save chokidar

gulpfile.js 수정


'use strict';
var gulp = require('gulp');
var chokidar = require('chokidar');
var notify = require('gulp-notify');
var phpunit = require('gulp-phpunit');

var watcher = chokidar.watch(['src/**/*.php', 'tests/*.php']);

watcher.on('change', function(){
    gulp.src('tests/*.php')
        .pipe(phpunit('vendor/bin/phpunit'))
        .on('error', notify.onError({
            title: "Gulp PHP Unit",
            message: "Error(s) occurred during testing..."
        }))
        .pipe(notify({
            title: "Gulp PHP Unit",
            message: 'Successfully ran test!'
        }));
});

실행


node gulpfile.js

결과



2번째 이후의 수정에서도 제대로 phpunit가 실행되게 되었다!


github



아래의 리포지토리에 소스를 올리고 있습니다.
phpunit-gulp

php 코드와 테스트 코드는 샘플로 아래 코드를 사용합니다.
phpunit

참고 자료



phper도 gulp 사용하자!
gulp
chokidar

좋은 웹페이지 즐겨찾기