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

the*_*uls 5 javascript mocha.js selenium-webdriver webdriver-io e2e-testing

我有一个以不同模式运行的应用程序(将其视为针对不同平台运行并使用不同协议),其中一个应用程序在每次打开页面时都有很长的加载时间。还有一些其他小的变化,但所有这些都可以使用 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)
    })
  })
}
Run Code Online (Sandbox Code Playgroud)

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

test1 = require('./test1')
test2 = require('./test2')
...
test10 = require('./test10')
describe('Main Test', function () {
  test1()
  test2()
  ...
  test10()
}
Run Code Online (Sandbox Code Playgroud)

如果我能以某种方式选择在我的命令上运行哪些测试函数,这将解决我的 DRY 问题

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

这显然行不通。

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

the*_*uls 6

所以在我在这里找到了一些关于它的文档后,我找到了解决这个问题的最佳方法。

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