PHP, WordPress เรามา BDD ด้วย Behat และ Mink

July 6th, 2016

BDD คืออะไรไม่ขอกล่าวถึง !!

แต่วันนี้ผมอยากจะแนำนำให้รู้จักกับ Behat ซึ่งมันคือ BDD Tool สำหรับเหล่า PHP Developer

และก็ยังมี Mink ซึ่งคือ Web acceptance testing framework ที่มาช่วยให้เราสะดวกและง่ายขึ้น

Selenium ซึ่งคือ automates browsers

โดยวันนี้จะแนะนำการใช้ Behat + Mink + Selenium + Ant เพื่อจะสั่งรันแบบ Cross Browsers แบบ Parallel

เริ่มด้วยการติดตั้ง Ant

brew install https://raw.github.com/adamv/homebrew-alt/master/duplicates/ant.rb

หลังจากนั้นเราก็เริ่มสร้าง project ของเราโดย Structure ประมาณนี้
structure

$ mkdir bdd_behat
$ cd bdd_behat
$ vim composer.json
  {
    "require": {
        "behat/behat": "2.4.*@stable",
        "behat/mink": "[email protected]",
        "behat/mink-goutte-driver": "*",
        "behat/mink-selenium-driver": "*",
        "behat/mink-selenium2-driver": "*",
        "behat/mink-extension": "*",
        "behat/mink-sahi-driver": "*"
    },
    "minimum-stability": "dev",
    "config": {
        "bin-dir": "bin/"
    }
  }

หลังจากนั้นก็ติดตั้ง dependency ต่างๆด้วย

$ curl http://getcomposer.org/installer | php
$ php composer.phar install

เพียงเท่านี้ project ของเราก็พร้อมสำหรับ Behat แล้ว ต่อไปเรามาสร้าง file config ของ Behat กัน

$ vim behat.yml

behat

ขั้นต่อไปก็มาเริ่มสร้าง Feature กันได้แล้ว

$ behat --init
  +d features - place your *.feature files here
  +d features/bootstrap - place bootstrap scripts and static files here
  +f features/bootstrap/FeatureContext.php - place your feature related code here
$ cd features
$ vim blog-search.feature

feature

ขั้นตอนต่อไปเราก็มาแก้ไข้ FeatureContext.php กัน
context

โดยจะเห็นว่าผมเขียน step เองเพียงแค่ 1 step เพราะว่าใน MinkContext ไม่ได้เตรียมไว้ให้ แต่สำหรับ step อื่นๆ นั้นมีพร้อมหมดแล้วใน MinkExtension

เป็นอันเรียบร้อย project ของเราพร้อมที่จะรันทดสอบ feature ได้แล้ว

จากนั้นก็มา set ant กันเพื่อจะให้ช่วยเราในการ build

$ vim build.xml

build

จะต้อง Start Selenium ทุกครั้งก่อนที่จะรัน Test

$ ant start-selenium

start

$ ant run

run

จะได้ result ที่ generate report ออกมาเป็น html format ที่สวยงาม
folder

Report
report

โอ้วววว ยาวมากก จบซะที ... ขอให้สนุกกับ BDD และ Automated Test นะครับ

Reference: