这是我的test.js文件,我试图在duplicateTests
函数中进行一些测试,并在其他测试文件中使用此函数:
function duplicateTests(user) {
it('nested test 2', done => {
console.log('user in duplicateTests function: ', user)
if (user) {
done()
} else {
done(new Error('Dummy error'))
}
})
}
describe('users', () => {
let user
before(async () => {
user = await models.User.create({
name: 'john',
})
})
describe('TEST THE BEFORE HOOK', () => {
it('test 1', done => {
console.log('user: ', user)
if(user) {
done()
} else {
done(new Error('Dummy error'))
}
})
duplicateTests(user)
})
})
'test 1'中的日志正确记录了用户:user: { name: 'john' }
但是“嵌套测试2”中的日志记录如下:user in duplicateTests function: undefiend
所以嵌套测试中的user
为undefined
,并且嵌套测试失败,正如您所预料的。
我试图在“之前”的钩子中返回一个诺言,但这并不能解决问题。感谢您能提供的任何帮助。
发生这种情况是因为duplicateTests()
在before()
完成之前运行。
describe('users', async () => {
let user
user = await models.User.create({
name: 'john',
})
describe('TEST THE BEFORE HOOK', () => {
it('test 1', done => {
console.log('user: ', user)
if(user) {
done()
} else {
done(new Error('Dummy error'))
}
})
duplicateTests(user)
})
})