Я пытаюсь написать тест phpunit для контроллера Laravel, который ожидает отправки запросов с телом в формате 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' => '[email protected]',
'password' => 'example_password'
);
Request::foundation()->server->set('REQUEST_METHOD', 'POST');
Request::foundation()->request->add($post_data);
$response = Controller::call('[email protected]', $post_data);
//check the $response
}
}
Я использую angularjs в интерфейсе, и по умолчанию запросы, отправленные на сервер, находятся в формате JSON. Я бы предпочел не изменять это, чтобы отправить форму с urlencoded.
Кто-нибудь знает, как я могу написать тестовый метод, который предоставляет контроллеру закодированное тело JSON?