如何在摩卡中不要重复测试我自己

问题描述 投票:0回答:1

这是我的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

所以嵌套测试中的userundefined,并且嵌套测试失败,正如您所预料的。

我试图在“之前”的钩子中返回一个诺言,但这并不能解决问题。感谢您能提供的任何帮助。

javascript node.js mocha
1个回答
0
投票

发生这种情况是因为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)
    })
})
© www.soinside.com 2019 - 2024. All rights reserved.