gpt4 book ai didi

javascript - Jest : How to test for something inside of a callback function?

转载 作者:行者123 更新时间:2023-11-29 15:14:20 25 4
gpt4 key购买 nike

在我的 React 组件中有一个静态函数,我想使用 jest 对其进行测试。

static async getInitialProps (context, apolloClient) {
const { req } = context
const initProps = { user: {} }

if (req && req.headers) {
const cookies = req.headers.cookie
if (typeof cookies === 'string') {
const cookiesJSON = jsHttpCookie.parse(cookies)
initProps.token = cookiesJSON['auth-token']
if (cookiesJSON['auth-token']) {
jwt.verify(cookiesJSON['auth-token'], secret, (error, decoded) => {
if (error) {
console.error(error)
} else {
redirect(context, '/')
}
})
}
}
}
}

这是我目前得到的,正在测试 jwt.verify 的调用。但是我该如何测试它的回调呢?我想检查 redirect 的调用,如果没有错误...

test('should call redirect', () => {
// SETUP
const context = { req: { headers: { cookie: 'string' } } }
jsHttpCookie.parse = jest.fn().mockReturnValueOnce({ 'auth-token': 'token' })
jwt.verify = jest.fn(() => redirect)
// EXECUTE
Page.getInitialProps(context, {})
// VERIFY
expect(jwt.verify).toHaveBeenCalled()
})

最佳答案

最简单的方法是显式声明你的回调

const callback = (error, decoded) => {
if (error) {
console.error(error)
} else {
redirect(context, '/')
}
}

并单独测试。

另一个选择是为 jwt.verify 做一个更智能的模拟

jwt.verify = jest.fn((token, secret, callback) => callback())

这样你的实际回调将被调用并可以被测试

关于javascript - Jest : How to test for something inside of a callback function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50790779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com