Запустите ava test.before() только один раз для всех тестов

Я хотел бы использовать 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, Не уверен, что он ожидает там.

1 ответ

Решение

AVA запускает каждый тестовый файл в своем собственном процессе. test.before() должен использоваться для настройки приборов, которые используются только процессом, в котором он вызывается.

Похоже, вы хотите выполнить настройку, которая повторно используется в ваших тестовых файлах / процессах. В идеале этого следует избегать, поскольку в итоге вы можете создать трудно обнаруживаемые зависимости между выполнением различных тестов.

Тем не менее, если это то, что вам нужно, то я бы предложил использовать pretest скрипт npm, который запускается автоматически при выполнении npm test,

В вашем 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'); и вы получите доступ к нужным вам данным.
Другие вопросы по тегам