首页 > 解决方案 > 从 PHPUnit 测试调用时,方法中无法识别命名路由

问题描述

从包含命名路由的另一个类调用方法时,无法识别该路由

这个 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 测试中不起作用

标签: laravel-5phpunit

解决方案


终于找到了答案

require_once由于路由文件的多个实例并非全部获得所需文件而导致使用子路由文件存在问题。

这是我最终找到的讨论here

在我们的路由文件的所有级别切换require_once到解决了这个问题require


推荐阅读