Задать вопрос
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, но
у него нет метода возвращающего тип исключения. Не удобно идентифицировать исключения по коду или ошибке. Ну и в принципе хочется разобраться когда и что использовать и в чём разница.
  • Вопрос задан
  • 186 просмотров
Подписаться 2 Простой 11 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@jazzus
В http тестах findorfail проверяется максимум assertNotFound. Это логично. Http запрос ничего про php код/Ларавел не знает и знать не должен. Если нужно тестировать код, тогда нужно писать юнит тесты.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽