นี่คือตอนที่ 4 ใน Series การเขียน CodeIgniter Acceptance Test โดยใช้ Codeception ซึ่งสามารถอ่านสามตอนก่อนหน้าได้จาก

ตอนที่ 1: http://www.forminit.com/?p=79

ตอนที่ 2: http://www.forminit.com/?p=86

ตอนที่ 3: http://www.forminit.com/?p=108

ในตอนที่ 4 นี้จะว่าด้วยเรื่องของการ setup ให้ codeception สามารถสร้าง รายงาน code coverage ได้ ซึ่งวิธีการจะเป็นดังนี้

Configuration

ให้เปิดไฟล์ CITest/codeception.yml ขึ้นมา แล้วเพิ่มบันทัดดังต่อไปนี้ไปที่ส่วนท้ายสุด

enabled คือการบอกให้ codeception รู้ว่า จะมีการรัน code coverage report

ส่วน whitelist คือรายชื่อไฟล์ที่จะถูก include เข้ามาในการทดสอบ และรายชื่อไฟล์ที่จะถูก exclude ออกจากการทดสอบ เนื่องเพราะว่า เวลาเรารัน test นั้น มี code บางตัว เราไม่จำเป็นต้องทดสอบเช่น code ของ vender หรือ code ที่ใช้รันพวก fixture เป็นต้น โดยสามารถระบุแบบ wildcard (*) คือเหมามันทุกไฟล์ในโฟลเดอร์นั้นๆ หรือแบบระบุชื่อไฟล์ตรงไปเลย

 

Connect Codeception กับ application server

เนื่องจากการรัน code coverage กับ acceptance test ที่ต้องรันผ่าน application server อย่าง apache, nginx, หรือ PhpBrowser เป็นต้นนั้น จะต้องมีกระบวนการที่ทำให้ Codeception สามารถ connect เข้ากับ application ที่รันบน server เหล่านั้นได้ มิฉะนั้น มันจะไม่มีทางเข้าถึง code ภายในระบบนั้นได้เลย

วิธีการเซตอัพจะมีดังนี้

  1. ให้ดาวน์โหลดไฟล์ c3.php จาก Github แล้วจากนั้นเอาไฟล์ดังกล่าวไปวางไว้ใน root project หรือ CITest/c3.php
  2. ให้แทรก code ดังต่อไปนี้ เข้าไปที่ด้านบนสุดของ CITest/index.php (หรือ entry file ของระบบใน codeigniter) ดังนี้

3. ในไฟล์ CITest/codeception.yml ให้แทรก code เข้าไปดังนี้

ซึ่ง สังเกตมั๊ยครับว่า url คือ root url ของระบบ ซึ่งจะเหมือนกับที่เราเคยระบุไว้ใน directive url ในไฟล์ CITest/tests/acceptance.suite.yml ดังนี้

เพียงแต่จุดแตกต่างของ c3_url นั้นคือ ต้องระบุชื่อ entry file ไว้ด้วย ซึ่งในที่นี้คือ index.php ที่เราได้แทรก code ของ c3.php เอาไว้ในขั้นตอนที่ 2

รันเทสต์เพื่อสร้าง Code coverage report

ขั้นตอนการรันนั้น เราสามารถรันได้สามแบบ ดังนี้

  1. รันรายงานบน console

การรันแบบนี้จะแสดงผล code coverage ดังรูป

screen-shot-2559-10-24-at-5-41-08-pm

2. รันรายงานบน html

เมื่อรันเทสต์แบบนี้ codeception จะไปสร้างไฟล์ index.html ภายในCITest/tests/_output/coverage/index.html ให้เราเปิดไฟล์ดังกล่าวด้วย browser อย่างเช่น Chrome หรือ firefox เป็นต้น เราจะได้หน้ารายงานที่ดูง่ายกว่าแบบแรก

screen-shot-2559-10-24-at-5-45-00-pm

หน้าที่ของเราหลังจากนี้ก็คือ ทำให้ code coverage ครอบคลุมถึงระดับ 80% ให้ได้

จบตอนที่ 4