JWT在使用mocha测试express应用程序时出现格式错误
我正在尝试为我的用户路由编写测试文件。我遇到的一个问题是用户的删除路由。路由定义如下JWT在使用mocha测试express应用程序时出现格式错误,express,testing,mocha.js,Express,Testing,Mocha.js,我正在尝试为我的用户路由编写测试文件。我遇到的一个问题是用户的删除路由。路由定义如下/api/users,并发出删除请求。这条路线受到保护,邮递员一切正常。我在Postman中设置的标题是授权 一切看起来都很好,但在我的测试文件中,结果有点奇怪。这是我的密码 describe('Users', () => { beforeEach((done) => { User.deleteMany({}, (err) => { done(); }); }
/api/users
,并发出删除请求。这条路线受到保护,邮递员一切正常。我在Postman中设置的标题是授权
一切看起来都很好,但在我的测试文件中,结果有点奇怪。这是我的密码
describe('Users', () => {
beforeEach((done) => {
User.deleteMany({}, (err) => {
done();
});
});
describe('/DELETE user', () => {
it('it should delete a user with authorized token', (done) => {
const user = new User({
username: 'testuser1',
email: 'testuser1@gmail.com',
password: 'password',
passwordConfirm: 'password',
});
let token = null;
chai
.request(server)
.post(`/api/users/signup`)
.send(user)
.end((err, res) => {
token = res.body.token;
});
chai
.request(server)
.delete(`/api/users`)
.set('Authorization', 'Bearer ' + token)
.end((err, res) => {
res.should.have.status(201);
res.body.should.be.a('object');
res.body.should.have.property('status').eql('success');
res.body.should.have
.property('message')
.eql('User deleted successfully!');
});
done();
});
});
});
测试通过了,但我得到了这个JWT错误,我不知道为什么。我知道我在实际代币前使用的是持票人
这就是错误所提到的
(节点:3059)未处理的PromisejectionWarning:JsonWebTokenError:jwt格式不正确
(节点:3059)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。(拒绝id:2)
(节点:3059)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程
我真的不明白发生了什么,因为当我在postman中测试它时,如果它工作正常,我在这里所做的就是使用
.set('Authorization','bearrier'+token)
添加令牌。在我看来,它应该工作相同。我面临这个问题,问题是你必须在你的方法之前调用.set()
,在这种情况下,delete()
chai
.请求(服务器)
.set('Authorization'、'Bearer'+token)/我遇到了这个问题,问题是你必须在你的方法之前调用.set()
,在这种情况下是delete()
chai
.请求(服务器)
.set('授权'、'承载人'+令牌)//
chai
.request(server)
.set('Authorization', 'Bearer ' + token) //<-- This before .delete()
.delete(`/api/users`)