gpt4 book ai didi

node.js - 使用 Jasmine 和 Express 模拟请求对象

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:09 24 4
gpt4 key购买 nike

我有一个非常简单的方法:

module.exports = {
login: function (username, password, req, res) {
authModule.check_login({login: username, pass: password}).then(function (user) {
req.session.regenerate(function () {
req.session.user = username
req.session.userID = user.id
req.session.fullName = user.fullName
req.session.email = user.email

res.redirect('/user')
})
}).catch(function (err) {
res.render('login', {
unsuccessful: true
})
})
}
}

在我的单元测试中,我试图验证此方法是否确实正确设置了 session 变量。我一直在尝试使用 jasmine.createSpy 来模拟请求对象,但它似乎不起作用,例如:

describe('user_login.login', function () {
it('sets the session vars', function (done) {
let req = jasmine.createSpy('req')
const res = {
render: function (renderTemplate, renderValues) {
let template = renderTemplate
let values = renderValues
}
}
const userLogin = require('../helpers/user_login')
userLogin.login(process.env.USER, process.env.PASSWORD, req, res)
expect(req.session.regenerate).toHaveBeenCalled()
done()
})
})

返回:

Failures:
1) user_login.login sets the session vars
Message:
TypeError: Cannot read property 'regenerate' of undefined

有什么方法可以让我在不向服务器发出请求的情况下访问 session 变量?我正在尝试测试函数本身,而不是服务器。模拟请求对象的正确方法是什么?

感谢您抽出时间。

最佳答案

嗯..您当前正在为请求对象创建一个 spy 。但你实际上想监视 req.session.regenerate 函数。

尝试用以下内容替换您的模拟请求:

let req = {session: {regenerate: jasmine.createSpy('regenerate')}};

关于node.js - 使用 Jasmine 和 Express 模拟请求对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44169395/

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