2015-08-27 4 views
2

Я пишу контроллер, как этоткак проверить перенаправлять в fuelphp

public function action_submit() 
{ 
$submit = Format::forge(json_decode($_POST["submit"]))->to_array(); 
Servicecode::add_code_request($submit); 
Response::redirect('code/codedetail'); 
} 

затем я хочу написать PHPUnit, чтобы проверить его,

public function test_adminsubmit() 
{ 
$Submit = array(...); 
$_POST["Submit"] = json_encode(Submit); 
$response = Request::forge('code/codeeditrequest/submit') 
    ->set_method('POST') 
    ->execute() 
    ->response(); 
$this->assertContains('ode Detail', $response->body->__toString()); 

что-то не так с этим, это было вставить данные в db, но когда он запускает перенаправление, я не могу перенаправить страницу, поэтому тест не удался! ПОЧЕМУ? Что случилось с этим.

ответ

2

В моем понимании вы не можете написать такой тест.

Потому что Response::redirect() не возвращает никакого содержимого, но возвращает только HTTP-заголовок для перенаправления и вызывает exit(). Таким образом, ваше тестирование phpunit прерывается exit().

Для проверки кода с Response::redirect(), вам необходимо заменить метод Response::redirect() на тест-двойным.

+0

спасибо, вы решили мою проблему! – yang

Смежные вопросы