CakePHPの単体テストのメモ。
app/Config/database.phpで定義する。
WEBブラウザ、コンソールともにCakePHPのテストは$testで定義したデータベースを使う。
$testのデータベース定義はapp/Config/database.phpで行う。
public $default = [
'datasource' => 'Database/Mysql',
.....
.....
'database' => 'example',
'prefix' => '',
'encoding' => 'utf8',
];
// テストで使うデータベース定義
public $test = [
'datasource' => 'Database/Mysql',
.....
.....
'database' => 'test_example',
'prefix' => '',
'encoding' => 'utf8',
];
毎回テストの最初に$testで定義したデータベースへフィクスチャを用いてテーブルおよびレコードを作成しテストが終わると破棄する。
Console/cake bakeを使いConsoleから対話的にフィクスチャを作成できる。
(例1)
app/Console/cake bake
Would you like to import schema for this fixture? (y/n) y
Would you like to use record importing for this fixture?(y/n) y
上記のように選択すると下記のようなフィクスチャが作成される。
テストの度に$testで定義したデータベースへ$defaultで定義しているデータベースからスキーマとレコードを読み込む。
public $import = array('model' => 'Example', 'records' => true);
(例2)
Would you like to import schema for this fixture? (y/n) y Would you like to use record importing for this fixture?(y/n) n Would you like to build this fixture with data from Account's table? (y/n) y
上記のように選択するとフィクスチャは下記のように作成される。
スキーマは$defaultで定義しているデータベースから読み込まれレコードはフィクスチャに記述されたものが使われる。
public $import = array('model' => 'Example');
/**
* Records
*
* @var array
*/
public $records = array(
array(
'id' => '1',
'created' => '2015-04-01 05:50:21',
'modified' => '2015-04-01 05:50:21',
),
array(
'id' => '2',
'user_id' => '42',
'created' => '0000-00-00 00:00:00',
'modified' => '0000-00-00 00:00:00',
),
);
CakeDC/migrationsでスキーマを管理しているときは下記コマンドでテストサーバーにテーブルを作成し、例2のように作成したフィクスチャでテストを行う(スキーマはdefautから読込みレコードはフィクスチャから読み込む)。
./app/Console/cake Migrations.migration run all -p
CircleCIで上手く機能している。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。