Node.Js - Jest 测试(令牌问题得到 401“未授权”)

Posted

技术标签:

【中文标题】Node.Js - Jest 测试(令牌问题得到 401“未授权”)【英文标题】:Node.Js - Jest Testing (Token Problem got 401 "Unauthorized") 【发布时间】:2021-02-04 22:41:18 【问题描述】:

您好,我正在用 Jest 测试一个使用 Node.js 的项目 我想测试我的功能

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)

)

但我收到了这个错误:

● 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)

【问题讨论】:

【参考方案1】:

在具有相同身份验证令牌的 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);
);

【讨论】:

以上是关于Node.Js - Jest 测试(令牌问题得到 401“未授权”)的主要内容,如果未能解决你的问题,请参考以下文章

用 Jest 测试 Vue 失败,Jest 遇到了意外的令牌,SyntaxError: Unexpected token import

如何在 jest node.js 中测试 if else 条件

Node.js events.js: 163 throw er;使用标志 --runInBand 执行 Jest 时

Node.js:Jest + redis.quit() 但打开句柄警告仍然存在

Vue/Typescript/Jest - Jest 单元测试语法错误:意外的令牌导入

意外的导入令牌 - 使用 Jest 测试 React Native