Chinaunix

标题: YII的固定状态模式测试(Fixtures Test) [打印本页]

作者: liu1084    时间: 2011-12-20 09:48
标题: YII的固定状态模式测试(Fixtures Test)
  1. class ProjectTest extends CDbTestCase {
  2.     //test fixtures
  3.     public $fixtures = array(
  4.         'projects' => 'Project', //可以直接在这里$this->projects引用里面的数据
  5.     );

  6.     public function testCreate(){
  7.         //由于设置了fixturs数据,所以在测试开始的时候,fixture就会填充到表中
  8.         $newProject = new Project;
  9.         $newProjectName = 'test project creation';
  10.         $newProject->setAttributes(array(
  11.             'name' => $newProjectName,
  12.             'description' => 'test project creation description',
  13.         ));

  14.         $this->assertTrue($newProject->save(false));

  15.         //读取刚刚建立的project
  16.         $retrivedLastProject = Project::model()->findByPk($newProject->id);
  17.         //var_dump($retrivedLastProject->id); //4
  18.         $this->assertTrue($retrivedLastProject instanceof Project);
  19.         $this->assertEquals($retrivedLastProject->name, $newProjectName);
  20.     }

  21.     public function testRead(){
  22.         /**从表trackstar_test.tbl_project以AR对象的方式返回一行数据,project1表示的是fixtures设置的key,它对应的值:
  23.         'project1' => array(
  24.             'name' => 'fixture data for project1 name',
  25.             'description' => 'fixture data for project1 description.',
  26.             'create_time' => '2010-03-19 22:25:21',
  27.             'create_user_id' => '1',
  28.             'update_time' => '2010-03-19 22:25:22',
  29.             'update_user_id' => '2',
  30.         ),
  31.          */
  32.         $retrivedProject = $this->projects('project1');
  33.         $this->assertTrue($retrivedProject instanceof Project);
  34.         $this->assertEquals($retrivedProject->name, 'fixture data for project1 name');
  35.     }

  36.     public function testDelete(){
  37.         $project = $this->projects('project3');

  38.         $savedProjectId = $project->id;
  39.         $this->assertTrue($project->delete());
  40.         $criteria = new CDbCriteria(array(
  41.             'condition' => 'id=:id',
  42.             'params' => array(
  43.                 ':id' => $savedProjectId,
  44.             ),
  45.         ));
  46.         $this->assertEquals(NULL, Project::model()->find($criteria));
  47.     }

  48.     public function testUpdate(){
  49.         $project = $this->projects('project2');
  50.         $updateTheSecondProjectName = 'Update the second project name';
  51.         $project->name = $updateTheSecondProjectName;
  52.         $this->assertTrue($project->save(FALSE));
  53.         //读取刚刚更新的数据
  54.         $updateProject = Project::model()->findByPk($project->id);
  55.         $this->assertTrue($updateProject instanceof Project);
  56.         $this->assertEquals($updateProject->name, $updateTheSecondProjectName);
  57.     }
  58. }





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2