对所有测试运行ava test.before()一次

时间:2017-10-21 20:00:53

标签: node.js unit-testing ava

我想使用test.before()来引导我的测试。我尝试过的设置不起作用:

// bootstrap.js
const test = require('ava')

test.before(t => {
  // do this exactly once for all tests
})


module.exports = { test }


// test1.js

const { test } = require('../bootstrap')

test(t => { ... {)

AVA将在每个测试文件之前运行before()函数。我可以在before电话中进行检查,以检查是否已拨打电话,但我想找一个更干净的流程。我尝试将require参数用于:

"ava": {
  "require": [
    "./test/run.js"
  ]
 }

使用:

// bootstrap,js
const test = require('ava')

module.exports = { test }


// run.js

const { test } = require('./bootstrap')

test.before(t => { })


// test1.js
const { test } = require('../bootstrap')

test(t => { ... {)

但这只是打破了worker.setRunner is not a function。不确定它在那里的期望。

2 个答案:

答案 0 :(得分:0)

AVA在自己的进程中运行每个测试文件。 test.before()应该用于设置仅在其调用的过程中使用的灯具。

听起来您想要在测试文件/进程中重复使用的设置。理想情况下,这可以避免,因为您最终可能会在执行不同测试之间创建难以检测的依赖关系。

尽管如此,如果这是您所需要的,那么我建议您使用pretest npm脚本,该脚本会在您执行npm test时自动运行。

答案 1 :(得分:0)

您可以在您的package.json中首先运行设置脚本...

"scripts": {
    "test": "node setup-test-database.js && ava '*.test.js'"
}

然后...

  • 在该setup-test-database.js文件中,让它满足您的所有引导需要,并保存一个test-config.json文件以及您通过测试所需的一切。
  • 在每个测试中,您只需要添加const config = require('./test-config.json');,就可以访问所需的数据。