Во-первых, PHPUnit обычно запускается через консоль.Когда я проверяю переменную $ _SERVER через тесты, которые я запускаю, она сильно отличается от того, что можно найти на веб-сервере.В вашем методе isAjax вы должны использовать что-то вроде:
$this->getRequest()->getHeaders() // array of headers
$this->getRequest()->getHeader('HTTP_X_REQUESTED_WITH'); //specific header
Если вы действительно, действительно хотите использовать $ _SERVER в своем контроллере, то почему бы просто не установить переменную $ _SERVER в тесте?
$_SERVER['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
$request->setMethod('POST');
$request->setPost(array(
'name' => 'name bar',
'email' => 'email x',
));
$this->dispatch('/ajaxjson');
Во-вторых, и что более важно, вы на самом деле ничего не тестируете ... Вы должны иметь утверждение в методе теста.По сути, вы можете использовать
$this->assertController('ajaxjson');
$this->assertAction('index');
Но вам действительно нужно настроить несколько тестов для этого действия.Тест для
- , когда запрос не является сообщением
- Когда запрос не является ajax
- , когда пользователь сохраняется
- , когда пользователь не являетсясохранено