8

我看过一些名为*.test.js, *-test.js,*.spec.js等的文件。

是否有如何命名 JavaScript 测试文件的实际约定?或者这取决于我使用的框架?

4

3 回答 3

7

在使用了几个测试框架后,我觉得下面的更好:

对于测试文件名,使用如下:

  1. /test/*.test.js- 首选,无需解释。
  2. /test/*.spec.js- 好的,但是新加入的人总是问我 - 为什么?这里的 Aspec表示需求规范。
  3. /test/*.test.txt- 首选,如果测试用例在文本文件中。一组行是一个测试用例(见下文)。

例如:

  • a.js是应该测试的主要 JavaScript 文件
  • /test/a.test.js是上面测试的测试文件a.js。请注意,这/test/是一个测试文件夹。

你可能会发现*.test.txt新的,所以添加更多的细节。

一个测试用例的格式为三行,可以是以下格式*.test.txt

  • inputParam1 - may be the first parameter of a critical function which needs many tests
  • inputParam2 - may be second parameter of a critical function which needs many tests
  • expected
  • inputParam1
  • inputParam2
  • expected
  • ...

因此,每三行构成一个测试用例。

您可以偶尔添加如下函数名称line,以测试不同的函数:

  • -func:someMethod1
  • ... (above input/expected lines)
  • -func:someMethod2
  • ... (above input/expected lines)

要执行函数名,或为类创建新对象,可以使用eval(className),someMethod1[inputParam]等。虽然eval不推荐,但我使用它,因为它是测试框架,不是生产文件。如果这是一个问题,你会比 eval 更好的方法。

在使用了几个测试框架后,发现这个文本文件测试,对于一些特殊情况来说是最方便的。(无需在 JavaScript、JSON 等中格式化)

如果需要,您可以忽略以#、// 或所有空行开头的那个。

因此,我编写了自己的框架,以这种方式工作。

  • 如果您知道可以阅读上述格式的测试框架,*.test.txt请在下面发表评论。

  • 如果您需要我的代码,请联系我,将通过 GitHub 分享。

于 2020-08-23T12:56:06.070 回答
5

这取决于框架,尽管大多数框架允许您定义一个 glob 模式来确定哪些文件应该被视为测试文件,例如testRegexJest 中的选项。Jest 的默认值将考虑目录中*.test.js*.js文件__tests__是测试文件。在Mocha中,这是一种grep选择

于 2018-04-03T14:39:21.287 回答
-1

我更喜欢classServiceName.spec.ts。你的问题被标记为单元测试,所以我假设你正在测试一个单元。

因此,如果我有一个名为person.component.ts的组件,我的测试将是person.component.spec.ts并且它将位于相同的文件夹结构中。如果我有person.service.ts那么测试将是person.service.spec.ts相同的文件夹结构。

您的标签中还包含Cypress,因此这可能是一个集成测试。我会将其命名为我正在测试的页面或场景。很抱歉假设 Angular 和 TypeScript。

于 2018-04-04T21:54:42.227 回答