如何适当地重用摩卡测试的描述块?

How to appropriately reuse the describe blocks of mocha tests?

我有一个 运行 处于不同模式的应用程序(将其视为 运行ning 用于不同的平台以及使用不同的协议),其中一个应用程序的加载周期很长打开页面的时间。还有一些其他的小变化,但所有这些都可以使用 wdio 的设置变量来处理。

目前,我为应用程序的每个部分创建了一个测试文件(带有描述)。如果正在测试的配置之一没有这么长的等待时间,那会很好。无论如何,我决定处理这个测试用例,将其全部放在一个文件中,所有文件都在同一页上。

无论如何,我想知道我是否可以以某种方式重用它们,就像它们是函数一样,而不是将我之前的所有测试复制并粘贴到这个大文件中。

因为现在我只是把东西包装在函数中,所以例如:

// test1.js
module.exports = function test1 () {
  describe('Test1', function () {
    var settings = {}

    before(function () {
     // do something
    })

    it('do something', function () {
      assert.ok(true)
    })
    it('do something else', function () {
          assert.ok(true)
    })
  })
}

在另一个文件中,我们 运行 我们创建的每个函数:

test1 = require('./test1')
test2 = require('./test2')
...
test10 = require('./test10')
describe('Main Test', function () {
  test1()
  test2()
  ...
  test10()
}

这会解决我的 DRY 问题,如果我能以某种方式 select 根据我的命令使用

测试功能 运行

wdio wdio/wdio.conf.js --specs wdio/test/spects/browser/test1.js

这显然行不通。

基本上我想要一个能够重用我的测试的解决方案(描述块)。我正在做的是正确的道路吗?如果不行,应该怎么做?

因此,在找到一些相关文档后,我找到了解决此问题的最佳方法 here

我将按照我之前的描述进行操作,但是我不会将所有这些函数都放在同一个文件中,而是将它们保存在它们自己的文件中。仍然可能有更好的解决方案,但它仍然是针对 运行 我的应用程序的不同模式复制和粘贴所有测试用例的改进。

只需以编程方式创建不同的描述块。用所有更改的参数(包括块的名称)将 describe 块包装在一个函数中,然后简单地调用该函数来创建变体。

我做了一个小回购协议来证明这一点:https://github.com/fatso83/forum-support-code/commit/cb2bc10b1d8bdae31e8f0a8c4e724c70583a5e11