如何更好地构建Jasmine单元测试,使它们不会最终存储在一个巨大的文件中?

时间:2019-03-28 09:28:27

标签: angular unit-testing jasmine components

我想确保单元测试可读且可维护,而不是将组件(或类)的所有测试都转储到一个文件中,因为这似乎是目前的“最佳实践”。我认为这种做法对除琐碎的代码或组件之外的任何事物都是有害的,并且可能对我所见的所有JS / TS代码库都产生负面影响。

我自己不是前端开发人员,我一直在努力寻找或看到更好的选择,但是到目前为止,解决“胖测试文件”问题的唯一方法是为每个组件/服务创建一个specs文件夹, :

  • 每种方法创建一个测试文件

  • 每个描述“上下文”创建一个测试文件

当需要通用状态或设置时,我可以创建一个“助手”服务或一些其他通用功能,这些功能可以从需要它的测试中调用。

这是否被认为是可以接受的方法?还是就最佳实践而言,这个问题仍未真正成立?

1 个答案:

答案 0 :(得分:0)

以另一种方式解决问题:为什么测试如此繁重?

根据the style guide,您应该考虑将文件限制为400行代码。

删除样板,导入和空格,大约相当于300行代码。您的功能是否仅限于此?

如链接中所述,您应遵循一个规则,该规则基本上指出您的功能应承担单一责任。您的功能是否遵循该规则?

此外,假设您遵循这些规则并且仍然有大量测试文件,还有几种解决方案可以减少测试所需的代码量:

  • 对于模拟游戏,您可以在ng功能的同一文件夹中创建一个单独的文件
  • 您可以将测试分为几个文件,每个文件专用于特定任务(***.ui.spec.ts***.http.spec.ts ...)
  • 您还可以在类/常量中分解测试代码,以使其可重用

最后

  

但是到目前为止,解决“胖测试文件”问题的唯一选项是为每个组件/服务创建一个specs文件夹

错了。根据{{​​3}},

  

要高效工作,您必须能够快速找到文件,尤其是当您不知道(或不记得)文件名时。将相关文件放在一个直观的位置可以节省时间。描述性的文件夹结构为您和跟随您的人们带来了不同的世界

您应该将测试文件保留在其功能旁边。