如何使用mocha和supertesttesting头部参数的快速restapi?

我必须testing我的restapi。 某些路由在用户身份validation令牌的http请求标头中需要一个值。

我已经在纯JavaScript代码中分离了我的有趣业务逻辑,但是我找不到在http请求头中testing需要令牌的路由的方法。

欢迎任何其他摩卡和/或超级食品的替代品。

使用supertest,您可以使用set关键字设置标题参数:

api.get('/aroute/') ... .set('headerParameterName', value) ... 

以下是使用supertesttesting具有令牌授权的Express服务器API的supertest

app.js

 var express = require('express'); var app = express(); var jwt = require('jsonwebtoken'); var expressJwt = require('express-jwt'); var secret = 'my-secret'; app.get('/get-token', function(req, res) { var token = jwt.sign({foo: 'bar'}, secret); res.send({token: token}); }); app.post( '/test', expressJwt({ secret: secret }), function(req, res) { res.send({message: 'You could use the route!'}); } ); app.use(function(err, req, res, next) { res.status(err.status || 500).send({error: err.message}); }); app.listen(4040, function() { console.log('server up and running at 4040 port'); }); module.exports = app; 

test.js

 var request = require('supertest'); var app = require('./app.js'); describe('Test Route with Token', function() { var token = ''; before(function(done) { request(app) .get('/get-token') .end(function(err, res) { var result = JSON.parse(res.text); token = result.token; done(); }); }); it('should not be able to consume the route /test since no token was sent', function(done) { request(app) .post('/test') .expect(401, done); }); it('should be able to consume the route /test since token valid was sent', function(done) { request(app) .post('/test') .set('Authorization', 'Bearer ' + token) .expect(200, done); }); });