测试 laravel 路由识别方法类型

Posted

技术标签:

【中文标题】测试 laravel 路由识别方法类型【英文标题】:Testing laravel routes identify method type 【发布时间】:2018-10-23 05:18:12 【问题描述】:

如果请求是 get 或 post,我如何获取 Laravel 路由?

我尝试使用以下方法测试我的 laravel 路线

public function testRoutes()
    
        $app = app();
        $routes = $app->routes->getRoutes();


        /**
         * Test if mynamespace routes are redirected to login page if is not the login page
         */
        echo  php_EOL;

        foreach ($routes as $route) 

            if(strpos($route->getName(),'mynamespace::' ) !== false ) 

                $url = $route->uri;

                //$appURL = env('APP_URL') .'/';

                $response = $this->get($url);

                if((int)$response->status() !== 200 )
                    echo   $url . ' (FAILED) did not return 200. The response is ' . $response->status();
                    $this->assertTrue(false);
                 else 
                    echo  $url . ' (success ?)';
                    $this->assertTrue(true);
                
                echo  PHP_EOL;

            
        
    

但我想暂时排除发帖请求

【问题讨论】:

【参考方案1】:

我们可以看到Route 类有一个属性$methods

您的解决方案如下所示:

if (in_array('POST', $route->methods)) continue;

看看 Laravel 本身提供的测试可能会很有趣。测试响应测试的简单方法等等!

Laravel testing.

【讨论】:

以上是关于测试 laravel 路由识别方法类型的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 在身份验证异常时自动重定向

Laravel 路由相同的基本路径

手把手教你跑Larave框架实战笔记系列之二

larave学习笔记1-安装配置

在 Laravel 中对控制器进行单元测试而不测试路由的最佳方法是啥

路由类型资源 Laravel 8 中方法的默认参数