如何创建仅用于测试的 Laravel 路由(phpunit)?

Posted

技术标签:

【中文标题】如何创建仅用于测试的 Laravel 路由(phpunit)?【英文标题】:How to create Laravel route only for testing (phpunit)? 【发布时间】:2018-10-21 03:10:18 【问题描述】:

我想测试我的解析器。有没有办法创建路由并在该路由上返回内容 - 仅用于 phpunit 测试?

【问题讨论】:

【参考方案1】:

测试的目的是模仿实时应用程序的功能。 (这将是功能测试或可能使用 Dusk)。如果您需要获取无法通过常规路线访问的数据,您可能正在进行单元测试(针对特定的类或对象)。这不需要路由。

【讨论】:

我有一个解析器,它从数据库中获取 url,然后转到该 url 并解析数据并保存在数据库中。对于测试,我想将我的测试 url 插入到 DB 中,这将返回一些用于解析器的代码,然后如果解析器解析并正确保存数据,我可以检查数据库。 那么您需要初始路线才能进入您的数据库吗?使用播种机。 不,我需要解析器 curl 的路由。路由将返回内容供解析器解析。 但这不会发生在您的实时站点中吗? 在你的路由中,使用if ( env('ENVIRONMENT') != 'production' ) ... your routes ... 【参考方案2】:

您可以创建单独的文件仅用于测试路线。

然后仅在开发环境中包含这些路由,或者仅在生产环境中排除它们......

【讨论】:

在您的/routes/web.php 中,您可以添加条件if ( env('ENVIRONMENT') != 'production' ) include_once('test_routes.php') 并在此文件(test_routes.php)中声明您的测试路线...

以上是关于如何创建仅用于测试的 Laravel 路由(phpunit)?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 路由仅在 phpunit 测试期间返回 302 而不是 404 响应

Laravel创建 Service Provider 测试实例

如何在 laravel 上使用 page.php?id=id 路由

Laravel API 路由 404 未找到修复?

从 laravel 路由中删除 index.php

如何允许任何用户使用 Laravel JWT 身份验证访问路由?