【发布时间】:2021-09-28 21:29:45
【问题描述】:
我正在开发一个大型 Laravel 应用程序,目前在 v8.45.1 上从未进行过测试,所以我正在努力让它达到我们可以开始编写单元和功能测试的地步。
我遇到了一个问题,即两个请求类(App\Core\Request 和 App\Core\FormRequest)都使用一个特征 RequestTrait,它包含一组实用方法。
这在本地/暂存/生产中显然可以正常工作,但是当我运行测试套件时,它抱怨该特征提供的方法都不存在:
Method Illuminate\Http\Request::isFromTrustedSource does not exist.
他们在不同的地方被称为Request::isFromTrustedSource() 或request()->isFromTrustedSource()。
我可以想象在测试环境中运行应用程序时,请求可能会有所不同。是使用了不同的类,还是由于某种原因该特征不适用?
【问题讨论】:
-
不要混淆 Illuminate\Http\Request 和 FormRequest - 这是不同的东西。请展示您的测试用例
-
您的应用似乎以某种方式覆盖了默认请求对象,但您的测试似乎并没有这样做,因此解决这个问题取决于这种交换是如何发生的,以及在测试初始化
-
@Maksim 我没有混合 Request 和 FormRequest - 我只是说该特征适用于两者。测试用例只是开箱即用的 Feature/ExampleTest,它检查主路径 (/) 是否返回 200。
-
App\Core\Request 扩展了 Illuminate\Http\Request?
-
@Maksim 是的
标签: php laravel testing request traits