Laravel-将测试目录匹配到应用程序目录

时间:2018-07-12 22:18:03

标签: laravel unit-testing testing

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

  • 当我刚开始开发应用程序时,我编写的不需要完全HTTP生命周期进行的任何测试,都将放在tests/Unit目录中。

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

    • 示例:使用GETPOST等请求测试控制器,并确保我得到200或同等响应。

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

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

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

在构造与应用程序目录完全相同的测试目录时是否存在陷阱?

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

侧面注意:我很清楚,我的单元测试不遵循“正常”的惯例,即嘲笑您的依赖项并单独进行测试。这是一个单独的问题,但是总之,我觉得模拟不允许您轻松地重构代码。有关我在辩护中谈论的内容的更多信息:https://www.youtube.com/watch?v=LdUKfbG713M

1 个答案:

答案 0 :(得分:1)

我也在使用Laravel提供的结构。但是我没有什么改变。例如对于功能测试,我已经添加了一个admin文件夹,因此我可以为我添加的admin API或单元测试编写测试(以unit / cron,unit / middleware,unit / jobs等方式进行控制)目录。

测试/功能/管理员

tests / unit / cron

测试/单元/中间件

测试/单位/职位

测试/单位/政策

测试/单元/模型 ...

还要查看哪个API或函数具有测试功能,要进行测试有点困难。如果您遵循TDD原则,那么不必担心这一部分,因为您知道每个编写一段代码的人都将为此编写测试。但是,如果您不遵循TDD,并且刚开始为项目编写测试,则需要使用--HTML标记运行PHPUnit coverage,它将返回HTML图形,该图形可以告诉您多少代码覆盖率项目有。