モデルのテスト
今日も粛々とyiiする。
yiic で生成したモデルをテストする必要はないと思いますが、サンプルとして残しておきます。
Saveのテスト
テストケース
yiiprac1\protected\tests\unit\UserTest.php にtestSaveメソッドを加える。
<?php class UserTest extends CDbTestCase { public $fixtures=array( 'users'=>'User', ); public function testSave() { $user = new User; $user->setAttributes(array( 'username' => 'user_save', 'password' => 'pass_save', 'email' => 'user_save@abc.def', ),false); $this->assertTrue($user->save(false)); $user = User::model()->findByPk($user->id); $this->assertTrue($user instanceof User); $this->assertEquals('user_save', $user->username); $this->assertEquals('pass_save', $user->password); $this->assertEquals('user_save@abc.def', $user->email); } }
テスト
C:\xampp\htdocs\yiiprac1\protected\tests>phpunit unit\UserTest.php PHPUnit 3.5.13 by Sebastian Bergmann. . Time: 1 second, Memory: 8.25Mb OK (1 test, 5 assertions) C:\xampp\htdocs\yiiprac1\protected\tests>
テスト後、DB上でsaveメソッドで保存したレコードを確認できる。
Findのテスト
フィクスチャ
yiiprac1\protected\tests\fixtures\User.php
<?php return array( 'sample1'=>array( 'username' => 'user1', 'password' => 'pass1', 'email' => 'user1@abc.def', ), 'sample2'=>array( 'username' => 'user2', 'password' => 'pass2', 'email' => 'user2@abc.def', ), );
Defining Fixtures - Yii guideのコメントにもありますが、phpMyAdmin(3.3以降)で php array でエキスポートしたものをちょっと加工すればフィクスチャができます。
テストケース
yiiprac1\protected\tests\unit\UserTest.php
<?php class UserTest extends CDbTestCase { public $fixtures=array( 'users'=>'User', ); //略 public function testFind() { $user = User::model()->findByPk(1); $this->assertTrue($user instanceof User); $this->assertEquals('user1', $user->username); $this->assertEquals('pass1', $user->password); $this->assertEquals('user1@abc.def', $user->email); $user = User::model()->find('username=:username', array(':username'=>'user2')); $this->assertTrue($user instanceof User); $this->assertEquals('user2', $user->username); $this->assertEquals('pass2', $user->password); $this->assertEquals('user2@abc.def', $user->email); } }
テスト
C:\xampp\htdocs\yiiprac1\protected\tests>phpunit --filter testFind unit\UserTest.php PHPUnit 3.5.13 by Sebastian Bergmann. . Time: 1 second, Memory: 8.25Mb OK (1 test, 8 assertions) C:\xampp\htdocs\yiiprac1\protected\tests>
Deleteのテスト
テストケース
yiiprac1\protected\tests\unit\UserTest.php
<?php class UserTest extends CDbTestCase { public $fixtures=array( 'users'=>'User', ); //略 public function testDelete() { $user = User::model()->findByPk(1); $this->assertTrue($user instanceof User); $this->assertEquals('user1', $user->username); $this->assertEquals('pass1', $user->password); $this->assertEquals('user1@abc.def', $user->email); $this->assertTrue($user->delete()); $user = User::model()->findByPk(1); $this->assertNull($user); } }
テスト
C:\xampp\htdocs\yiiprac1\protected\tests>phpunit unit\UserTest.php PHPUnit 3.5.13 by Sebastian Bergmann. ... Time: 1 second, Memory: 8.25Mb OK (3 tests, 19 assertions) C:\xampp\htdocs\yiiprac1\protected\tests>