JavaScript 测试文件的约定是什么?

tsc*_*904 7 javascript unit-testing cypress

我见过叫了几个文件*.test.js*-test.js*.spec.js,等。

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

Man*_*ddy 19

使用了几个测试框架后,我感觉下面的比较好:

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

  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 分享。


Huy*_*yen 7

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