Как определить, что все тесты (в нескольких файлах) завершены - PullRequest
0 голосов
/ 21 января 2019

Я хотел бы удалить базу данных после запуска всех тестов во всех файлах. Есть ли в Мокко крючок для этого?

after() Хук может быть применен только в пределах 1 файла.

Ответы [ 3 ]

0 голосов
/ 21 января 2019

Создайте родительский файл, который включает / требует все другие тесты, затем используйте after в этом файле:

describe('User', () => {
  require('../user/user.spec.js')
})

describe('Post', () => {
  require('../post/post.spec.js')
})

describe('Tag', () => {
  require('../tag/tag.spec.js')
})

describe('Routes', () => {
  require('./routes.spec.js')
})

after(() => {
  // drop database
})
0 голосов
/ 22 января 2019

В мокко есть крючок корневого уровня. В вашем случае вы можете создать новый файл и указать команду drop database в функции after. Вот и все!

// init-test.js

after(function() {
  // drop database
});

Вам не нужно перемещать какой-либо тест в другой файл теста для этого решения.

Ссылка: https://mochajs.org/#root-level-hooks

0 голосов
/ 21 января 2019

Я использую process.on('exit'). Он работает при запуске только одного файла, а также при запуске тестов из package.json .

database.mocha-base.js:

db.connect()

process.on('exit', async () => {
  console.log('All tests finished. Droping database')
  db.dropDatabase(dbName)
  db.disconnect()
})

module.exports = {
  applyHooks() {
     before(async () => {
        // truncate tables
     })
  }
}

Я включаю database.mocha-base.js во все тесты, которым требуется доступ к базе данных:

const dbMochaBase = require('./path/to/database.mocha-base.js')

describe('Tests', () => {
   dbMochaBase.applyHooks()

   ...
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...