如何更好地构建Jasmine单元测试,使它们不会以巨大的文件结尾?

问题描述 投票:0回答:1

我想确保我的单元测试是可读和可维护的,而不是将我的组件(或类)的所有测试转储到一个文件中,因为它现在似乎是“最佳实践”。我认为这种做法对于除了琐碎的代码或组件之外的任何东西都是有害的,它可以成为我见过的所有JS / TS代码库中的负面力量。

我自己并不是一个前端开发人员,我很难找到或看到更好的替代方案,但到目前为止修复“胖测试文件”问题的唯一选择是为每个组件/服务创建一个specs文件夹,并且:

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

要么

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

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

这是否被认为是一种可接受的方法,或者这个问题在最佳实践方面是否仍未真正建立?

angular unit-testing jasmine components
1个回答
0
投票

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

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

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

如链接中所述,您应该依赖于规则1,这基本上表明您的功能应该只有一个责任。您的功能是否遵循该规则?

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

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

最后,

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

是错的。根据style guide

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

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

© www.soinside.com 2019 - 2024. All rights reserved.