似乎我尝试从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的新手,所以我希望我只是做些傻事。
更新:事实证明,只有在设置了fail-fast标志时才会中断。那可能是一个错误。