Какой лучший способ для unit test контроллера в Laravel без тестирования маршрута тоже

Я прочитал много документации по тестированию контроллеров с помощью $this->call($destination, $parameters, 'GET');, но это, похоже, зависит от того, какой маршрут настроен, и зная, что нужно использовать $destination.

Как правило, это нормально, но доступ к контроллеру с маршрута не подходит для модульного тестирования. Я хочу unit test контроллер, а не маршрут. Существует стандартный способ для unit test контроллеров, не имея дело с маршрутами?

Просто вручную создается экземпляр контроллера и вызывается метод достаточно? Например.

$controller = new MyController;
$response = $controller->someMethod($param);
$this->assertSomething($response);

Возможно, контроллеры не должны тестироваться на модуле (и только имеют приемочные тесты), и мой запрос является признаком того, что мои контроллеры слишком тяжелы.

Ответ 1

Вы можете напрямую вызвать свои действия:

$response = $this->action('GET', '[email protected]', ['id' => 1]);