При вызове метода из другого класса, содержащего именованный маршрут, маршрут не распознается

Этот тест PHPUnit предназначен для проверки того, что функциональность системы по-прежнему соответствует требованиям, поскольку система сложна.

Тестирование запускается из локальной среды (хутор-бродяга)

Я вызываю метод отсюда:

$orderLines = (new EDIProcessController())->getChanges($order['ediOrder'], $order['partnerId']);

И названный маршрут, вызывающий проблему:

$orderLine->item_url = route('warehouse.products.view', $itemDetails->id);

Я получаю следующую ошибку:

InvalidArgumentException: Route [warehouse.products.view] not defined.

/home/vagrant/vr/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php:305
/home/vagrant/vr/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:790
/home/vagrant/vr/app/Http/Controllers/Warehouse/EDI/SPS/EDIProcessController.php:1575
/home/vagrant/vr/vendor/laravel/framework/src/Illuminate/Support/Collection.php:861
/home/vagrant/vr/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php:139
/home/vagrant/vr/app/Http/Controllers/Warehouse/EDI/SPS/EDIProcessController.php:1746

Маршрут, как определено в файле маршрутов:

Route::get('/view/{id}', 'Warehouse\ProductController@viewProduct')->name('warehouse.products.view');

Этот маршрут отлично работает при вызове из приложения Laravel, но не будет работать в тесте PHPUnit.

1
Josh 15 Мар 2019 в 05:01

1 ответ

Лучший ответ

Наконец нашел ответ

Проблема с использованием require_once для файлов подмаршрутов, вызванная тем, что несколько экземпляров файлов маршрутов не все получают требуемые файлы.

Вот обсуждение здесь, которое я в конце концов нашел

Переключение require_once на require на всех уровнях наших файлов маршрутов решает проблему

0
Josh 29 Май 2019 в 00:05