Home เขียนโปรแกรม Grunt Watch กับ Grunt PHPUnit มารัน PHPUnit อัตโนมัติดีกว่า

Grunt Watch กับ Grunt PHPUnit มารัน PHPUnit อัตโนมัติดีกว่า

by gigkokman

ใครที่กำลังหัดตั้งไข่กับการพัฒนาซอฟแวร์แบบ TDD (Test-Driven Development) สิ่งหนึ่งที่เราต้องทำอยู่บ่อยมากๆ ก็คือการรันคำสั่ง phpunit นั่นเองบ่อยแค่ไหนหน่ะเหรอ  หึหึ  ก็ทุกครั้งที่มีการแก้ไขหรือสร้างไฟล์ก็ว่าได้ ในเมื่อเราต้องทำมันตลอดอยู่แล้วทำไมไม่หาวิธีที่มันง่ายๆ ล่ะให้มันรันอัตโนมัติตอนที่เราบันทึกไฟล์เป็นไง ^^

สำหรับเพื่อนๆ ที่ยังไม่ค้นเคยกับ Grunt สามารถเข้าไปดูวิธีการติดตั้งได้ที่ Getting Started เมื่อติดตั้ง grunt  เรียบร้อยแล้ว ต่อไปก็ติดตั้ง grunt plugin 2 ตัวครับ โดยเข้าไปที่โฟลเดอร์งาน (project) ของเราก่อน

  1. grunt-contrib-watch 
    npm install grunt-contrib-watch --save-dev
  2. grunt-phpunit 
    npm install grunt-phpunit --save-dev

จากนั้นก็สร้างไฟล์ Gruntfile.js ไว้ที่โฟลเดอร์งานของเรานี่แหละครับ เพื่อตั้งค่าให้กับ plugin ครับ

module.exports = function (grunt) { grunt.initConfig({ phpunit: { unit: { dir: '/workspace/katas' //ตรงนี้ให้เปลี่ยนเป็นโฟลเดอร์งานนะครับ อย่าลืมๆ }, options: { bin: 'phpunit', colors: true } }, watch: { scripts: { files: ['**/*.php'], tasks: ['phpunit'], options: { spawn: false, }, }, }, }); grunt.loadNpmTasks('grunt-phpunit'); grunt.loadNpmTasks('grunt-contrib-watch'); };

dir: ให้เป็นโฟลเดอร์ที่เก็บไฟล์ php ที่เราต้องการรันนะครับเป็น path เต็มเลย อย่างของผมก็จะเป็นโฟลเดอร์ katas

มาดูหน้าตาของโฟลเดอร์ของเราว่าหน้าตาจะประมาณไหน

grunt-watch-phpunit-directories-structureถึงตรงนี้ก็จะเป็นการเปิดใช้งาน  grunt-watch  เอาไว้ก่อน โดยเปิด command-line และเข้าไปที่โฟลเดอร์งานของเราครับ ของผมก็จะเป็นโฟลเดอร์  katas จากนั้นก็รันคำสั่ง grunt watch  ไว้ครับ

grunt watch

เท่านี้ก็เรียบร้อยครับ การรันคำสั่ง  grunt watch เหมือนบอกว่าให้เราจับตาดูไฟล์ php ที่อยู่ในโฟลเดอร์งานของเราว่ามีการแก้ไข เพิ่มหรือลบรึป่าว ถ้ามีก็ให้รันคำสั่ง  phpunit ครับ

running-grunt-watch

เท่านี้เราก็ไม่ต้องมาคอยพิมพ์คำสั่ง phpunit ทุกครั้งที่มีการแก้ไขไฟล์แล้ว  ^^