ให้เรตสมาชิก: 2 / 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'=>'me@example.com',
            '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'=>'me@example.com',
            '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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
(Close)B - คลิกข้อมูลบริษัท Notice: Undefined variable: new_rows in
โดย thatsawan พ 20 พฤษภาคม 2020 6:18 pm บอร์ด Odoojob.com - Tester
2
5
อ 26 พฤษภาคม 2020 6:17 pm โดย thatsawan
3 วิธีการคุม Budget ในระบบการสั่งจ้างผู้รับเหมา
โดย sirirat พ 20 พฤษภาคม 2020 6:07 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
20
พ 20 พฤษภาคม 2020 6:07 pm โดย sirirat
B - บริษัทไม่ขึ้นให้เลือก ตอนสร้าง ตำแหน่ง งาน
โดย thatsawan พ 20 พฤษภาคม 2020 5:48 pm บอร์ด Odoojob.com - Tester
1
3
พ 20 พฤษภาคม 2020 6:10 pm โดย thatsawan
ความแตกต่างระหว่างเงินสดย่อยกับเงินทดรองจ่าย
โดย sirirat พ 20 พฤษภาคม 2020 5:30 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
18
พ 20 พฤษภาคม 2020 5:30 pm โดย sirirat
(Close)B - สมัครสมาชิกใหม่ login เเล้ว ERR_TIMED_OUT
โดย thatsawan พ 20 พฤษภาคม 2020 5:25 pm บอร์ด Odoojob.com - Tester
1
3
พ 20 พฤษภาคม 2020 6:04 pm โดย thatsawan
ระบบ ERP กับการตั้งเงินมัดจำจ่ายเพื่อให้บัญชีดึงไปตั้งหนี้จ่ายชำระ
โดย sirirat พ 20 พฤษภาคม 2020 3:58 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
20
พ 20 พฤษภาคม 2020 3:58 pm โดย sirirat
ระบบ ERP กับการสั่งซื้อวัสดุและอุปกรณ์เพื่อใช้งานในบริษัท
โดย sirirat พ 20 พฤษภาคม 2020 12:56 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
108
พ 20 พฤษภาคม 2020 12:56 pm โดย sirirat
E-mail pr odoojob
โดย numtan5839 พ 20 พฤษภาคม 2020 11:24 am บอร์ด Odoojob.com - Manual & Content
0
4
พ 20 พฤษภาคม 2020 11:24 am โดย numtan5839
งานประจำวันที่ 20 พฤษภาคม 2563
โดย sirirat พ 20 พฤษภาคม 2020 10:02 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
4
30
พ 20 พฤษภาคม 2020 8:29 pm โดย sirirat
R - template อีเมล
โดย tsukasaz อ 19 พฤษภาคม 2020 9:23 pm บอร์ด OdooJob.com - Developer
1
5
พฤ 21 พฤษภาคม 2020 1:55 am โดย mindphp
สรุปการเรียนรู้ประจำวัน 19/05/63
โดย sirirat อ 19 พฤษภาคม 2020 6:58 pm บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
4
อ 19 พฤษภาคม 2020 6:58 pm โดย sirirat
B - Email ที่ส่งมาตอนสมัครงาน แปลกๆ
โดย thatsawan อ 19 พฤษภาคม 2020 6:34 pm บอร์ด Odoojob.com - Tester
0
2
อ 19 พฤษภาคม 2020 6:34 pm โดย thatsawan
สรุปการคุยกับลูกค้าครั้งแรก
โดย sirirat อ 19 พฤษภาคม 2020 6:18 pm บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
6
อ 19 พฤษภาคม 2020 6:18 pm โดย sirirat
(Close)B - คลิกที่ หมวดหมู่: วิศวกรรมคอมพิวเตอร์ระบบ เเล้ว error
โดย thatsawan อ 19 พฤษภาคม 2020 6:10 pm บอร์ด Odoojob.com - Tester
2
4
พ 20 พฤษภาคม 2020 5:53 pm โดย thatsawan
(Close) B - คลิกที่ ตำแหน่งงานทั้งหมดของบริษัทนี้ เเล้ว error
โดย thatsawan อ 19 พฤษภาคม 2020 6:08 pm บอร์ด Odoojob.com - Tester
1
4
พ 20 พฤษภาคม 2020 11:05 am โดย tsukasaz
(Close) B - ปุ่มตำแหน่งงานไม่ยาวเท่าตัวหนังสือ
โดย thatsawan อ 19 พฤษภาคม 2020 5:58 pm บอร์ด Odoojob.com - Tester
2
5
พ 20 พฤษภาคม 2020 5:50 pm โดย thatsawan
(Close)B - error google map Notice: Undefined property: MdjobsViewCompanyjobs::$item in /home/odoojob/domains/odoo
โดย thatsawan อ 19 พฤษภาคม 2020 5:54 pm บอร์ด Odoojob.com - Tester
2
5
พ 20 พฤษภาคม 2020 5:55 pm โดย thatsawan
(Close)B - คลิกรายละเอียดเเล้ว error 1146
โดย thatsawan อ 19 พฤษภาคม 2020 5:50 pm บอร์ด Odoojob.com - Tester
2
4
พ 20 พฤษภาคม 2020 5:55 pm โดย thatsawan
(Close)B - หน้า index มี error
โดย thatsawan อ 19 พฤษภาคม 2020 5:47 pm บอร์ด Odoojob.com - Tester
2
5
พ 20 พฤษภาคม 2020 5:56 pm โดย thatsawan
สรุปงานที่เคยทำ (เคยฝึกงาน)
โดย sirirat อ 19 พฤษภาคม 2020 4:42 pm บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
13
อ 19 พฤษภาคม 2020 4:42 pm โดย sirirat