ให้เรตสมาชิก: 1 / 5

ดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

Yii Framework Unit Testing

Unit testing ของ Yii Framework ถูกเขียนอยู่บน PHPUnit, สรุปหลักการพื้นฐานของการเขียน unit Testing ใน Yii มีดังนี้
- ชื่อ Class เขียนอยู่ในรูปแบบ
XyzTest โดยต้อง extends จาก CTestCase หรือ CDbTestCase เมื่อ Xyz คือชื่อ class สำหรับ test เช่นถ้าเราต้องการเขียน test Post class ชื่อที่ตั้งคือ PostTest ส่วนการ extends นั้น extends CTestCase สำหรับ test ทั่วๆไป ถ้าจะ test active record ควรใช้ CDbTestCase แทน CTestCase เพราะ class PHPUnit_Framework_TestCase เป็น class แม่ของทั้งสอง class นั้นอยู่แล้ว คุณสมบัติต่างๆ ก็จะถูกสือถอดจาก class นั้น
- Save ไฟล์ด้วยชื่อตามรูปแบบ XyzTest.php ไว้ที่ protected/tests/unit/
- ชื่อ method ภายใน class ที่ต้องการ test เขียนตามรูปแบบ testAbc เมื่อ Abc คือชื่อ method
- วิธีการ test method มักจะใช้วิธีใส่ลำดับคำสั่งยืนยัน (assertion statements) เช่น assertTrue, assertEquals ซึ่งทำหน้าที่เป็น checkpoints ในการตรวจสอบความถูกต้องของ Class ของเรา

ตัวอย่างโค้ดการเขียน CommentTest
<?php

class CommentTest extends CDbTestCase
{
    /**
     * We use both 'Post' and 'Comment' fixtures.
     * @see CWebTestCase::fixtures
     */
    public $fixtures=array(
        'posts'=>'Post',
        'comments'=>'Comment',
    );

    public function testFindRecentComments()
    {
        $this->assertEquals(array(), Comment::model()->findRecentComments());

        $comment=new Comment;
        $comment->setAttributes(array(
            'content'=>'comment 1',
            'status'=>Comment::STATUS_APPROVED,
            'create_time'=>time(),
            'author'=>'me',
            'email'=>This email address is being protected from spambots. You need JavaScript enabled to view it.',
            'post_id'=>$this->posts['sample1']['id'],
        ),false);
        $this->assertTrue($comment->save(false));
        $this->assertEquals(1,$comment->id);

        $comments=Comment::model()->findRecentComments();
        $this->assertEquals(1,count($comments));
        $this->assertEquals($comment->attributes, $comments[0]->attributes);
    }

    public function testApprove()
    {
        $comment=new Comment;
        $comment->setAttributes(array(
            'content'=>'comment 1',
            'status'=>Comment::STATUS_PENDING,
            'create_time'=>time(),
            'author'=>'me',
            'email'=>This email address is being protected from spambots. You need JavaScript enabled to view it.',
            'post_id'=>$this->posts['sample1']['id'],
        ),false);
        $this->assertTrue($comment->save(false));

        $comment=Comment::model()->findByPk($comment->id);
        $this->assertTrue($comment instanceof Comment);
        $this->assertEquals(Comment::STATUS_PENDING,$comment->status);

        $comment->approve();
        $this->assertEquals(Comment::STATUS_APPROVED,$comment->status);
        $comment=Comment::model()->findByPk($comment->id);
        $this->assertEquals(Comment::STATUS_APPROVED,$comment->status);
    }
}
ทดลองรัน

>phpunit functional/CommentTest.php

ทดสอบรันในรูปแบบอื่นๆอ่านที่บทความ

เตรียมเครื่องทำ สำหรับ PHPUnit และ Selenium
ก่อนรัน ถ้ายังไม่ได้ satrt selenium ให้ start มันก่อนด้วยคำสั่ง
D:\xampp\htdocs\Yii_Framework>java -jar selenium-server.jar

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
MOD_MTB_NEWS_RECENT
ผมแก้ไขไฟล์ Index.php ไม่ได้ครับ ใน Joomla
โดย Before Dong อ 22 ส.ค. 2017 4:04 pm บอร์ด Joomla Development
2
15
อ 22 ส.ค. 2017 4:04 pm โดย Before Dong
mdfiles version 1.0.31 สร้างแบบฟอร์มเอกสาร แนบไฟล์ไม่ได้ครับ
โดย Chinamon Sang อ 22 ส.ค. 2017 9:56 am บอร์ด Joomla Development
0
13
อ 22 ส.ค. 2017 9:56 am โดย Chinamon Sang
สอบถามวิธีการย้ายตำแหน่งปุ่ม input file ใน JavaScript
โดย Ik Kat จ 21 ส.ค. 2017 3:36 pm บอร์ด JavaScript & Jquery Ajax
0
24
จ 21 ส.ค. 2017 3:36 pm โดย Ik Kat
การเขียนโปรแกรมภาษาซี 5 ฟังก์ชัน
โดย Tong Ratika จ 21 ส.ค. 2017 9:59 am บอร์ด Programming - PHP
0
24
จ 21 ส.ค. 2017 9:59 am โดย Tong Ratika
เข้าเฟสไม่ได้
โดย สิ่งเดียวคือ เธอน่ะ อ 20 ส.ค. 2017 8:09 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
23
อ 20 ส.ค. 2017 8:09 pm โดย สิ่งเดียวคือ เธอน่ะ
ศัพท์ปัญญาประดิษฐ์ (AI) ที่ ที่ทางราชบัณฑิตยสถาน
โดย Oh_nO อ 20 ส.ค. 2017 3:58 am บอร์ด Microsoft Office Knowledge & line & Etc
0
28
อ 20 ส.ค. 2017 3:58 am โดย Oh_nO
การใช้คำสั่ง find_element_by_tag_name ของ selenium ในการเปิด tag ใหม่ของเว็บไซต์
โดย บัวบุญ จันทะโคตร ส 19 ส.ค. 2017 6:15 pm บอร์ด Python Knowledge
0
20
ส 19 ส.ค. 2017 6:15 pm โดย บัวบุญ จันทะโคตร
ช่วยด้วยครับ dreamweaver เมนูตารางด้านซ้ายชอบเลื่อนลงเมื่อใส่รูปหรือข้อความด้านขวา
โดย cmchamping ส 19 ส.ค. 2017 4:38 pm บอร์ด Programming - PHP
0
24
ส 19 ส.ค. 2017 4:38 pm โดย cmchamping
ใช้โปรแกรม dreamweaver สร้างเว็บ ตารางเมนู ชอบเลื่
โดย cmchamping ส 19 ส.ค. 2017 4:27 pm บอร์ด Programming - PHP
1
23
ส 19 ส.ค. 2017 4:27 pm โดย mindphp
อยากรู้ วิธีดู... หรือเอา รูป logo .... จาก หน้าเว็บที่กำหนด path รูปไว้ใน css
โดย Before Dong ส 19 ส.ค. 2017 4:14 pm บอร์ด HTML CSS
2
35
ส 19 ส.ค. 2017 4:14 pm โดย Before Dong
Css ปรับ Logo บอร์ด phpbbthailand.com
โดย mindphp ส 19 ส.ค. 2017 3:54 pm บอร์ด phpbbthailand.com
0
4
ส 19 ส.ค. 2017 3:54 pm โดย mindphp
อัพเดดความคืบหน้า
โดย mindphp ส 19 ส.ค. 2017 3:52 pm บอร์ด phpbbthailand.com
0
2
ส 19 ส.ค. 2017 3:52 pm โดย mindphp
ช่วยบอกลิงค์ที่โหลด MJ Upgrad joomla V1.5 เป็น V3.7
โดย บุคคลทั่วไป ส 19 ส.ค. 2017 10:24 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
2
37
ส 19 ส.ค. 2017 10:24 am โดย บุคคลทั่วไป
การนำเอา regex มาใช้ใน selenium
โดย บัวบุญ จันทะโคตร ศ 18 ส.ค. 2017 5:39 pm บอร์ด Python Knowledge
0
21
ศ 18 ส.ค. 2017 5:39 pm โดย บัวบุญ จันทะโคตร
อยากทราบแนวทางการสร้าง selenium ให้คลิ๊กลิ้งค์ต่อจากหน้า text link ที่คลิ๊กมา นั้นจะต้องเช่นไรครับ
โดย บัวบุญ จันทะโคตร ศ 18 ส.ค. 2017 4:33 pm บอร์ด Programming - C/C++ & java & Python
0
31
ศ 18 ส.ค. 2017 4:33 pm โดย บัวบุญ จันทะโคตร
ช่วยหน่อยครับ mdfile ไม่สามารถสร้าง categiries ได้
โดย Chinamon Sang ศ 18 ส.ค. 2017 9:09 am บอร์ด Joomla Development
6
65
ศ 18 ส.ค. 2017 9:09 am โดย Chinamon Sang
Joomla ออกเวอร์ชั่น 3.7.5 Fix Bug ติดตั้ง Joomla ไม่ได้เมือใช้ remote ฐานข้อมูล
โดย mindphp ศ 18 ส.ค. 2017 3:23 am บอร์ด PHP News
1
34
ศ 18 ส.ค. 2017 3:23 am โดย toonytoony2004
สอบถามวิธีเรียกใช้งาน Jcrop.js
โดย Ik Kat พฤ 17 ส.ค. 2017 5:30 pm บอร์ด JavaScript & Jquery Ajax
3
33
พฤ 17 ส.ค. 2017 5:30 pm โดย thatsawan
คู่มือการใช้งานโปรแกรม OpenShot Video Editor โปรแกรมตัดต่อ VDO เบื้องต้น
โดย meeieis พฤ 17 ส.ค. 2017 4:01 pm บอร์ด Graphic design
0
34
พฤ 17 ส.ค. 2017 4:01 pm โดย meeieis
รู้จักคำสั่ง page_source ใน selenium webdriver
โดย บัวบุญ จันทะโคตร พฤ 17 ส.ค. 2017 3:08 pm บอร์ด Python Knowledge
0
22
พฤ 17 ส.ค. 2017 3:08 pm โดย บัวบุญ จันทะโคตร