CakePHPのユニットテストのメモ。
ホストのIPを192.168.33.10に設定している場合の例。
http://192.168.33.10/test.php
$ Console/cake test [options] [<category>] [<file>]
(例1) アプリケーションのテスト
$ Console/cake test app
アプリケーションの作成済みテスト一覧が下記のように表示されるので選択して実行する。
App Test Cases:
[1] AllTests
[2] Controller/ExampleController
[3] Model/Example
......
(例2) Test/Model/ExampleTest.phpの実行
$ Console/cake test app Model/Example
Exampleモデルのsomeメソッドをテストは下記のようになる。
app
|
|.....
|
|-- Model
|
|-- Example.php
|
|.....
|
|-- Test
|
|-- Case
|
|-- Model
|
|-- ExampleTest.php
|
|-- Fixture
|
|.....
|-- ExampleFixture.php
|
// Model/Example.php
<?php
App::uses( 'AppModel', 'Model' );
/**
* Example Model
*
*/
class Example extends AppModel {
/**
* name
*
* @var
*/
public $name = 'Example';
.....
.....
/**
* some
*/
public function some() {
.....
return $value
}
}
// Test/Case/Model/ExampleTest.php
<?php
App::uses( 'Example', 'Model' );
/**
* Example Test Case
*
*/
class ExampleTest extends CakeTestCase {
/**
* Fixtures
*
* @var array
*/
public $fixtures = array(
'app.example' // --- (1)
);
/**
* setUp method
*
* @return void
*/
public function setUp() {
parent::setUp();
$this->Example = ClassRegistry::init( 'Example' );
}
public function testメソッドsomeの何らかのテスト() {
$this->assertEquals( 'expect value', $this->Example->some() );
}
/**
* tearDown method
*
* @return void
*/
public function tearDown() {
unset( $this->Example );
parent::tearDown();
}
}
フィクスチャの指定(1)はTest/Fixture/ExampleFixture.phpを参照する。
ExampleFixture.phpはテストで使うテーブル定義とレコード(テストデータ)を定義している。
database.phpの$defaultで指定したデータベースのデータを使う場合のフィクスチャの例。
<?php
/**
* ExampleFixture
*
*/
class ExampleFixture extends CakeTestFixture {
/**
* Import
*
* @var array
*/
public $import = array('model' => 'Example', 'records' => true);
}
Fixtureはbakeコマンドでインタラクティブに作成できる。
$ Console/cake bake
テストの度にフィクスチャで指定したテーブルとレコードがdatabase.phpの$testで指定したデータベースに作成されテストが終わると破棄される。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。