【问题标题】:Laravel - Match test directory to app directoryLaravel - 将测试目录与应用目录匹配
【发布时间】:2018-12-21 06:01:06
【问题描述】:

我目前正在开发一个相当大的 Laravel 5.6 应用程序。默认情况下,Larvel 带有一个tests 目录以及一个tests/Unittests/Feature 子目录。

  • 当我第一次开始开发我的应用程序时,我编写的任何不需要完整 HTTP 生命周期的测试,我都会放在 tests/Unit 目录中。

    • 示例:在模型上测试自定义本地查询范围。
  • 同样,任何需要完整 HTTP 生命周期的测试我都会放在 tests/Feature 目录中。

    • 示例: 使用 GETPOST 等请求测试控制器,并确保收到 2​​00 响应或等效响应。

现在我的应用程序已经变得非常庞大,我开始认为应该有更好的方法来组织我的tests 目录。我还注意到,根据 codecov.io 的报告,我的部分代码库没有测试覆盖率。

在我看来,创建一个tests/App 目录并将其镜像到项目根目录的app 目录中的所有文件和类是有意义的。每个类和/或文件都有相应的测试。这样,我将更好地了解我的应用程序的哪些部分具有测试覆盖率,哪些没有。我还没有看到任何其他这样做的项目,所以我对应用这种方法犹豫不决。

所以,总结一下我的问题:

测试目录的结构与应用目录完全相同吗?

是否有另一种方法来构建您的测试目录,以便您可以轻松判断哪些类/文件具有相应的测试?

旁注:我很清楚我的单元测试不遵守模拟依赖项和单独测试的“正常”约定。这是一个单独的问题,但简而言之,我觉得模拟不允许您轻松重构代码。有关我在辩护中所说的更多信息:https://www.youtube.com/watch?v=LdUKfbG713M

【问题讨论】:

    标签: laravel unit-testing testing


    【解决方案1】:

    我也在使用 Laravel 提供的结构。但我做了一点改变。例如,对于功能测试,我添加了一个管理文件夹,这样我就可以为管理 API 编写测试,或者为我添加的单元测试(单元/cron、单元/中间件、单元/作业……)编写测试,这样我就可以控制目录。

    测试/功能/管理

    测试/单元/cron

    测试/单元/中间件

    测试/单元/作业

    测试/单元/策略

    测试/单元/模型 ...

    而且要查看哪个 API 或函数进行了测试,这有点困难。如果您遵循 TDD 原则,则无需担心这部分,因为您知道每个编写一段代码的人都会为其编写测试。但是如果您没有遵循 TDD 并且您刚刚开始为您的项目编写测试,那么您需要使用 --HTML 标签运行 PHPUnit 覆盖率,它会为您返回 HTML 图表,它可以告诉您您的代码覆盖率有多少项目有。

    【讨论】:

    • 感谢您的反馈。你知道我是否需要启用 xdebug 才能生成代码覆盖率?
    • 是的,你应该有 Xdebug,你可以使用 Xdebug,但我建议你使用 Phpdbg 而不是 Xdebug,看看这个链接它会对你使用不同的命令运行测试有很大帮助 @987654321 @
    • 这看起来很棒。我不知道 Phpdbg 是一个东西。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2014-04-16
    • 2016-09-08
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多