我正在尝试测试使用 jsonwebtoken 保护的 API 路由。
我已经在邮递员中测试了我的路线并得到了正确的结果,但是使用 mocha/chai/chai-http 运行相同的测试不起作用。
每次我测试受保护的路线时,我都会收到 401 'unauthorized'
describe('user', () => {
let user, token
beforeEach(async () => {
await dropDb()
user = await new User({ email: 'testing@test.com', password: 'password' }).save()
const payload = { userid: user.id, role: user.roles.title, status: user.roles.status }
token = jwt.sign(payload, secret, { expiresIn: 3600 })
})
it('should return a list of users when logged in', async () => {
console.log(token)
const result = await chai.request(app)
.get('/api/user')
.set('Authorization', `Bearer ${token}`)
expect(result).to.have.status(200)
expect(result).to.be.json
})
})
我的直觉是,不知何故存在一种竞争条件,即传递到集合中的令牌在测试运行之前还没有完成签名。但在结果中,我的令牌似乎已被设置。
此外,如果我在看到它与创建的令牌匹配之后 console.log 令牌。有人遇到类似的问题吗?