3

我想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. 不确定它在那里期望什么。

4

2 回答 2

3

AVA 在自己的进程中运行每个测试文件。test.before()应该用于设置仅由调用它的进程使用的固定装置。

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

不过,如果这是您需要的,那么我建议您使用pretestnpm 脚本,它会在您执行npm test.

于 2017-10-23T14:55:34.753 回答
2

在你的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');,您就可以访问所需的数据。
于 2018-12-18T18:11:12.207 回答