Gromfer
@Gromfer
Увлекаюсь Laravel

Почему expectException не работает в функциональных тестах?

Почему expectException не работает в функциональных тестах? То есть элементарно это утверждение никогда ни при каких условиях не срабатывает в функциональных тестах. В юнит вроде всё хорошо. Причём приходится использовать альтернативу:
$response = $this->post(route('items.use', ['id' => -1, 'count' => 0]));

$this->assertTrue($response->exception->getCode() == 0);

В контроллере:

$item = Item::findOrFail($id);

А вот такие утверждения:

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


Никогда не срабатывают.

А свойство "исключение" вообще никак не связано с утверждением expectException, expectExceptionCode, expectExceptionMessage и так далее. Они все не работают. Да, в принципе можно работать и со свойством exception, но
у него нет метода возвращающего тип исключения. Не удобно идентифицировать исключения по коду или ошибке. Ну и в принципе хочется разобраться когда и что использовать и в чём разница.
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
@jazzus
В http тестах findorfail проверяется максимум assertNotFound. Это логично. Http запрос ничего про php код/Ларавел не знает и знать не должен. Если нужно тестировать код, тогда нужно писать юнит тесты.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы