我正在尝试为 Laravel 控制器编写一个 phpunit 测试,该控制器需要带有 JSON 格式正文的发布请求。
控制器的简化版本:
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)
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 编码主体的测试方法?