UnitTest in cakePHP

PHP, Web January 14th, 2007

1. 从 cakeforg.org 下载最新的 Test Suite.
2. 把文件解压到相应的目录.

然后可以正式开始编写测试用例了.
首先数据库建一个 g20_template 的表,

1
2
3
4
5
6
7
CREATE TABLE "g20_template" (
    "id" integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
    "name" varchar(100) NOT NULL,
    "cols" varchar(100) NOT NULL,
    "create_date" datetime NOT NULL,
    "update_date" datetime NOT NULL
);

然后是写一个简单的 model.

1
2
3
4
5
6
<?php
class Template extends AppModel {
    var $name = 'Template';
    var $useTable = 'g20_template';  // I use g20_template table
}
?>

最后在 app/tests/app/cases/models 下编写一个 template.test.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
require_once LIBS . 'model/model.php';
require_once CAKE . 'app_model.php';
require_once MODELS . 'template.php';
 
class TemplateTestCase extends UnitTestCase {
    var $template = null;
 
    var $validName = '2 cols';
    var $validCols = '[\'50%\', \'50%\']';
    var $validCreateDate = '2007-01-14 16:56:00';
    var $validUpdateDate = '2007-01-14 16:56:00';
 
    function setUp() {
        $this->template =& new Template();
    }
 
    function testSave() {
        $this->template->data = array('Template' =>
                array('name' => $this->validName,
                    'cols' => $this->validCols,
                    'create_date' => $this->validCreateDate,
                    'update_date' => $this->validUpdateDate
                    )
                );
        $this->assertTrue($this->template->save());
 
        $id = $this->template->getLastInsertId();
        $this->template->id = $id;
        $this->assertEqual($this->template->field('name'), $this->validName);
        $this->assertEqual($this->template->field('cols'), $this->validCols);
        $this->assertEqual($this->template->field('create_date'), $this->validCreateDate);
        $this->assertEqual($this->template->field('update_date'), $this->validUpdateDate);
}
?>

让我们运行它吧~
Oh!Yeah~Green Bar~
php_test_suite.png

No related posts.

Tags: ,



Leave a Comment