2017-02-05 3 views
0

У меня есть метод обновления с попыткой поймать исключение, я написал тестовый класс, но это не распространяется на крылатый блок,тестового модуль в Laravel

public function update(Request $request, $id) 
{ 
    $links= Link::find($id); 
    if (empty($links)) { 
     return \Response::json(["status" => "error", "errors" => "Not found"], HttpResponse::HTTP_NOT_FOUND); 
    } 
    try { 
     $links= $links->update($request->all()); 
    } catch (\Exception $e) { 
     return \Response::json(['status' => $e->getTraceAsString(), 'errors' => 'errors.ERROR_DATABASE_UPDATE'], HttpResponse::HTTP_INTERNAL_SERVER_ERROR); 
    } 
    return \Response::json(array('success' => true, 'link' => $links)); 
} 

класс теста:

$response = $this->json('POST', '/links', [ 
      'title' => 'link1'])->seeStatusCode(200); 

     $responseContent = json_decode($response->response->getContent()); 
     $this->assertEquals($responseContent->success, true); 
     $linkToUpdate = $responseContent->link; 
     $updatedTitle = $linkToUpdate ->title. "Updated"; 

     $responseUpdate = $this->json('PUT', '/links/' . $linkToUpdate->id, [ 
      'title' => $updatedTitle])->seeStatusCode(200); 

     $responseContentUpdate = json_decode($responseUpdate->response->getContent()); 
     $this->assertEquals($responseContentUpdate->success, true); 
    } 

Но я не рассматриваю блок исключений catch, как я могу это сделать с помощью своего тестового класса?

ответ

1

Вы можете использовать expectException для этого

Создать часть вы тестируете бросить исключение, но как раз перед этим использование кода

$this->expectException(\Exception::class); 
$this->expectExceptionMessage(//Expect error message); //not needed but can be useful 

PHPUnit проверит, что expception был брошен, и если hasn»терпеть неудачу t или неправильный тип исключения бросается

+0

Спасибо за ваш ответ @dops! Я положил его в начале тестового метода, но получил эту ошибку «Неустранимая ошибка: вызов неопределенного метода LinkControllerTest :: expectException» – Lena

+0

@Lena 'LinkControllerTest' должен расширять' PHPUnit \ Framework \ TestCase' –

+0

@PiotrDawidiuk, он уже расширяет TestCase, что я сделал, это то, что я добавил $ this-> expectException (\ Exception :: class); как раз в начале метода тестирования обновлений (до того, как код, который я сделал), это правильно? – Lena

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

  • Нет связанных вопросов^_^