1

似乎如果我尝试从always.afterEach()函数中执行异步操作(或者只是缓慢?),则当测试失败时,进程不会等待它完成。我的具体情况是,我在每次测试后都尝试进行一些数据库清理,即使afterEach钩子被调用,它似乎也没有机会在进程退出之前完成。

我试图将其提炼成一个简单的例子:

import test from 'ava'

test.afterEach.always('CLEANUP', async t => {
  console.log('START', t.title)

  await new Promise(resolve => setTimeout(resolve, 5000))

  console.log('END', t.title)
})

test('Test', async t => {
  console.log('START', t.title)
  t.plan(1)

  t.is(1, 2)
  console.log('END', t.title)
})

这是我得到的输出:

START Test
END Test
  ✖ Test 1 === 2
START CLEANUP for Test

  1 test failed [10:42:18]


  1. Test
  AssertionError: 1 === 2
    _callee2$ (cleanup-test.js:15:5)
    Test.fn (cleanup-test.js:11:1)

我希望看到END CLEANUP打印(测试通过时确实会发生这种情况。

我是服务器端 JS 的新手,所以我希望我只是在做一些愚蠢的事情。

更新:事实证明,这只在设置失败快速标志时才会中断。这可能是一个错误。

4

0 回答 0