ใครที่กำลังหัดตั้งไข่กับการพัฒนาซอฟแวร์แบบ TDD (Test-Driven Development) สิ่งหนึ่งที่เราต้องทำอยู่บ่อยมากๆ ก็คือการรันคำสั่ง phpunit นั่นเองบ่อยแค่ไหนหน่ะเหรอ หึหึ ก็ทุกครั้งที่มีการแก้ไขหรือสร้างไฟล์ก็ว่าได้ ในเมื่อเราต้องทำมันตลอดอยู่แล้วทำไมไม่หาวิธีที่มันง่ายๆ ล่ะให้มันรันอัตโนมัติตอนที่เราบันทึกไฟล์เป็นไง ^^
สำหรับเพื่อนๆ ที่ยังไม่ค้นเคยกับ Grunt สามารถเข้าไปดูวิธีการติดตั้งได้ที่ Getting Started เมื่อติดตั้ง grunt เรียบร้อยแล้ว ต่อไปก็ติดตั้ง grunt plugin 2 ตัวครับ โดยเข้าไปที่โฟลเดอร์งาน (project) ของเราก่อน
- grunt-contrib-watch
npm install grunt-contrib-watch --save-dev
- 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 เอาไว้ก่อน โดยเปิด command-line และเข้าไปที่โฟลเดอร์งานของเราครับ ของผมก็จะเป็นโฟลเดอร์ katas จากนั้นก็รันคำสั่ง grunt watch ไว้ครับ
grunt watch
เท่านี้ก็เรียบร้อยครับ การรันคำสั่ง grunt watch เหมือนบอกว่าให้เราจับตาดูไฟล์ php ที่อยู่ในโฟลเดอร์งานของเราว่ามีการแก้ไข เพิ่มหรือลบรึป่าว ถ้ามีก็ให้รันคำสั่ง phpunit ครับ
เท่านี้เราก็ไม่ต้องมาคอยพิมพ์คำสั่ง phpunit ทุกครั้งที่มีการแก้ไขไฟล์แล้ว ^^