首页 > 解决方案 > Node.Js - Jest Testing (Token Problem got 401 "Unauthorized")

问题描述

Hello I'm testing with Jest a project with Node.js I want to test my functions

const userOne = {
_id: userOneId,
name: 'Mike',
email: 'mikey@example.com',
password: '56what!!',
tokens: [{
    token: jwt.sign({ _id: userOneId }, process.env.JWT_SECRET)
}] }

test('Should get profile for user', async () => {
await request(app)
    .get('/users/me')
    .set('Authorization', `Bearer ${userOne.tokens[0].token}`)
    .send()
    .expect(200)

})

but I got this error :

● Should get profile for user

expected 200 "OK", got 401 "Unauthorized"

  at Test.Object.<anonymous>.Test._assertStatus (node_modules/supertest/lib/test.js:270:12)
  at Test.Object.<anonymous>.Test._assertFunction (node_modules/supertest/lib/test.js:285:11)
  at Test.Object.<anonymous>.Test.assert (node_modules/supertest/lib/test.js:175:21)
  at Server.localAssert (node_modules/supertest/lib/test.js:133:12)

标签: javascriptnode.jsjestjsjwt

解决方案


您是否在具有相同身份验证令牌的 REST 客户端中为该端点获得 200?401“未授权”表示令牌无效。所以你需要检查你的令牌。如果令牌没有问题,请尝试以下

我相信这个请求是超测的要求吗?

const request = require('supertest');

test('Should get profile for user', async () => {
const response = await request(app)
                 .get('/users/me')
                 .set('Authorization', `Bearer ${userOne.tokens[0].token}`)
 expect(response.status).toEqual(200);
});

推荐阅读