2014-02-20 74 views
2

从Github上几个node.js项目的粗略观察,我注意到常见约定是将测试文件放在./spec目录下(确切名称可能有所不同:./tests./specs等)。我们称之为“经典”项目组织。Node.JS:测试代码与生产代码组织

在另一方面,也有(至少在理论上)的“本地化”组织:每个测试文件在同一目录因为它测试的生产文件(例如,./controllers下,我们将有login_controller.js以及login_controller.spec.js )。

为了避免这显然主观题我神学的战斗会问具体问题:

  • 有没有人看到使用本地化组织主要模块/应用程序?
  • 本地化组织有没有很多缺点/限制?通过“硬”,我的意思是沿着“好的,Heroku不包括其部署包(a.k.a slug)中的specs /目录,所以经典组织在服务器上的占用空间更小”。
  • 有没有测试框架(摩卡,茉莉花节点和合作),以某种方式强加“经典”计划?

回答

1
  1. 不,但这取决于您的组织偏好。我个人更喜欢测试目录。
  2. 没有。 Heroku包含了它所接收的所有内容,唯一被排除的内容是在你的.gitignore文件中从git中排除的内容。
  3. 不是100%确定,但通常不是,测试框架不会在您的代码上强加一个结构。他们只是提供工具,让你使用你想要的结构编写测试。
2

一致性在这里比你决定去的方向更重要。有几个相对较小的问题,我看到与源文件旁边的测试文件。

  1. 潜在的代码导航问题。我可以看到你有时在事故中打开 错误的文件。打开测试文件的意思是 打开源文件等。如果这些 文件并排存在,并且唯一的区别是 文件名中的.spec,则会更频繁地发生这种情况。

  2. 单元测试运行器的潜在问题。大多数单元测试运行者似乎默认使用 来选择测试文件夹。我相信你可以配置 来查看整个项目,但这取决于测试 跑步者。

  3. 潜在的较慢的单元测试自动化。由于您的测试文件是整个项目中混合的 ,因此测试运行程序必须扫描 您的整个项目以获取测试文件而不是专用目录。 对于大型代码库,这可能意味着您的测试套件需要更长时间才能完成。机会是速度上的差异相当小,但是相当小 。

正如我所说,这些都是小问题,你可以肯定地解决它们,但它确实增加了一些摩擦。您必须权衡潜在的不足之处,将您的测试文件放在源文件旁边。