2016-08-02 3 views
0

Я новичок в модульном тестировании и теперь пытаюсь написать несколько тестовых примеров с использованием PHPUnit для приложения Laravel. Я сделал один базовый тест, который выглядит следующим образом:Тестирование Исключения в PHPUnit

public function testGetPointsByApp() 
{ 
    $this 
     ->json(
      'GET', 
      self::URL.'/'.$value 
     ) 
     ->assertResponseStatus(200) 
     ->seeJson([ 
      'status' => 'success', 
     ]) 
     ->seeJsonStructure([ 
      'status', 
      'message', 
      'data' => [] 
     ]); 
} 

Теперь это работает. Но я хотел бы знать, как я могу проверить наличие недопустимых входов и для таких случаев, как нет данных с данными параметрами. Я бросаю соответствующие исключения в каждом из этих случаев, и он добавляет определенные сообщения. Как я могу проверить, выбрано ли это?

Я не хочу включать его в этот метод и хотел бы написать некоторые другие методы для проверки различных сценариев в API, таких как недопустимый UUID, никаких данных и т. Д. Поэтому для каждого раза мне нужно вызвать URL-адрес API или этот вызов может быть выполнен из любой функции настройки?

ответ

0

Я не знаю laravel, но в PHPUNIT вы можете проверить, выбрано ли исключение функцией expectException. Например, для InvalidArgumentException

$this->expectException(InvalidArgumentException::class); 

Вы также можете использовать аннотацию @expectedException и есть также много вещей, которые могут быть проверены в исключении, как expectExceptionCode() и т.д.

Далее вы можете найти here

0

С вами «Не выполняйте тест Unit (этот тест, который вы проводите, является приемочным тестом), вы не можете проверить его исключение, вы найдете плохой ответ:

$this 
    ->json(
     'GET', 
     self::URL.'/'.$BAD_VALUE 
    ) 
    ->assertResponseStatus(422) 
    ->seeJson([ 
     /* Whatever you want to receive at invalid request */ 
    ]) 
    ->seeJsonStructure([ 
     /* Whatever you want to receive at invalid request */ 
    ]); 

Ошибки проверки достоверности Laravel 422 - необработанный объект HTTP-код.

Вы также можете проверить ответ на ожидаемые сообщения об ошибках или что-то еще.

+0

Выбрасывая исключение, я на самом деле получаю код ошибки 417 при тестировании через Postman. На самом деле это ошибка ожидания. –

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