プロジェクトをビルド スクリプトに含めるためのテスト ケースの実装に取り組んでいます。この CakePHP 2.4 アプリケーションは大部分が REST ベースであり、routes.php ファイルで json 拡張機能を解析するように設定されています。アプリケーションの典型的な関数の例を次に示します。
public function index() {
$this->paginate = array(
'fields' => array('User.username', 'User.first_name', 'User.last_name', 'UserGroup.name','Location.name','User.id'),
'conditions' => array(
'active'=>1
),
'link' => array('UserGroup','Location')
);
$this->set('response', $this->RestApi->getResponse());
$this->set('_serialize','response');
}
これは、次のような json 構造を返します。
{"sEcho":1,"iTotalRecords":16,"iTotalDisplayRecords":14,"aaData":[["admin","Administrative"],["salesman","Salesman"]]}
そのため、テスト ケースを作成するときに、この URL を呼び出すと JSON 応答が返されることを期待していました。テストの 1 つは、それを適切にデコードし、データの検証に進むことです。問題は、testAction の呼び出しが何も返さないことです (ビューとコンテンツを返すように指示しようとしました)。応答にアクセスできる唯一の方法は、戻り値を見ることです。
例 - 機能しない:
$result = $this->testAction('/users/index.json',array(
'method' => 'GET',
'return' => 'contents'
));
var_dump($result); // NULL
例 - 機能しています:
$result = $this->testAction('/users/index.json',array(
'method' => 'GET',
'return' => 'vars'
));
では、変数を見ることの問題は何ですか? その 1 つは、アプリケーションがどのように機能するかを示す実際の例よりも少し先です。また、基本的な単体テストが期待どおりに機能しない場合、アーキテクチャについて少し心配になります。
アドバイスをお願いします。読んでくれてありがとう!
編集: HTML を返すだけの URL など、残りの URL に対して testAction を実行しても、まだ応答がないことを追加する必要があります。HTMLなどはありません...