【发布时间】:2018-12-21 06:01:06
【问题描述】:
我目前正在开发一个相当大的 Laravel 5.6 应用程序。默认情况下,Larvel 带有一个tests 目录以及一个tests/Unit 和tests/Feature 子目录。
-
当我第一次开始开发我的应用程序时,我编写的任何不需要完整 HTTP 生命周期的测试,我都会放在
tests/Unit目录中。- 示例:在模型上测试自定义本地查询范围。
-
同样,任何需要完整 HTTP 生命周期的测试我都会放在
tests/Feature目录中。-
示例: 使用
GET、POST等请求测试控制器,并确保收到 200 响应或等效响应。
-
示例: 使用
现在我的应用程序已经变得非常庞大,我开始认为应该有更好的方法来组织我的tests 目录。我还注意到,根据 codecov.io 的报告,我的部分代码库没有测试覆盖率。
在我看来,创建一个tests/App 目录并将其镜像到项目根目录的app 目录中的所有文件和类是有意义的。每个类和/或文件都有相应的测试。这样,我将更好地了解我的应用程序的哪些部分具有测试覆盖率,哪些没有。我还没有看到任何其他这样做的项目,所以我对应用这种方法犹豫不决。
所以,总结一下我的问题:
测试目录的结构与应用目录完全相同吗?
是否有另一种方法来构建您的测试目录,以便您可以轻松判断哪些类/文件具有相应的测试?
旁注:我很清楚我的单元测试不遵守模拟依赖项和单独测试的“正常”约定。这是一个单独的问题,但简而言之,我觉得模拟不允许您轻松重构代码。有关我在辩护中所说的更多信息:https://www.youtube.com/watch?v=LdUKfbG713M
【问题讨论】:
标签: laravel unit-testing testing