Я создаю приложение Laravel 4, и я столкнулся с небольшой хваткой. При написании тестов для моего контроллера я заметил по какой-то странной причине, что он никогда не может утверждать. Сохраняет мои (снятые) коды контроллера.Проблема с тестированием блока управления Laravel?
<?php use Controllers\Base\PublicController;
class GuestController extends PublicController {
/**
* Display the report issue form.
*
* @return null
*/
public function getReportIssue()
{
$this->layout->title = Lang::get('app.report_issue');
$this->layout->content = View::make('guest.report_issue');
}
public function postReportIssue()
{
$rules = [
'full_name' => 'required|min:2|max:100',
'email' => 'required|email',
'issue' => 'required|min:10|max:1000',
];
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
return Redirect::route('guest.report_issue')
->withInput()
->withErrors($validator->messages());
}
return Redirect::route('guest.reported_issue')
->with('msg', 'Okay');
}
}
Теперь он проверяет ив создан для двух методов выше являются ...
public function testHandleFailReportIssue()
{
Input::replace([
'full_name' => '',
'email' => '',
'issue' => '',
]);
$this->call('POST', 'report-issue');
$this->assertRedirectedToRoute('guest.report_issue');
$this->assertSessionHasErrors(['full_name', 'email', 'issue']);
}
public function testHandlePassReportIssue()
{
Input::replace([
'full_name' => 'John Doe',
'email' => '[email protected]',
'issue' => 'Lorem ipsum idom lola singel tudor reopmatica loesn dolor gotar.
Lorem ipsum idom lola singel tudor reopmatica loesn dolor gotar'
]);
$this->call('POST', 'report-issue');
$this->assertRedirectedToRoute('guest.reported_issue', [], ['msg']);
}
Первоначального испытания проходит успешно, но второй один выходит из строя. После небольшого расследования это показывает, что проверка не проходила, что означает, что метод Input::replace()
не выполняет свою работу, потому что я ввел правильные значения запроса. Может быть, им что-то не хватает?
[EDIT]
Я решил сделать это
public function testHandlePassReportIssue()
{
Input::replace([
'full_name' => 'John Doe',
'email' => '[email protected]',
'issue' => 'Lorem ipsum idom lola singel tudor reopmatica loesn dolor gotar.
Lorem ipsum idom lola singel tudor reopmatica loesn dolor gotar',
]);
$response = $this->route('POST', 'guest.report_issue');
dd($this->app['session']->get('errors'));
$this->assertRedirectedToRoute('guest.reported_issue', [], ['msg']);
}
на тест для отладки путем проверки на сессии и, как я подозревал, вход был не получать заселен, какие-либо причине это могло произойти ? Были возвращены сообщения проверки.
Спасибо, что проблема решена! – CreativityKills