JSON形式の本文を含む投稿リクエストを期待するLaravelコントローラーのphpunitテストを作成しようとしています。
コントローラーの簡易バージョン:
class Account_Controller extends Base_Controller
{
public $restful = true;
public function post_login()
{
$credentials = Input::json();
return json_encode(array(
'email' => $credentials->email,
'session' => 'random_session_key'
));
}
}
現在、データを urlencoded フォーム データとして正しく送信するテスト メソッドがありますが、データを JSON として送信する方法がわかりません。
私のテスト方法 (テストを書くときは github gist hereを使用しました)
class AccountControllerTest extends PHPUnit_Framework_TestCase {
public function testLogin()
{
$post_data = array(
'email' => 'user@example.com',
'password' => 'example_password'
);
Request::foundation()->server->set('REQUEST_METHOD', 'POST');
Request::foundation()->request->add($post_data);
$response = Controller::call('account@login', $post_data);
//check the $response
}
}
フロントエンドで angularjs を使用しています。デフォルトでは、サーバーに送信されるリクエストは JSON 形式です。urlencoded フォームを送信するためにこれを変更しないことをお勧めします。
コントローラーに JSON エンコードされた本体を提供するテストメソッドを作成する方法を知っている人はいますか?