在超级请求中设置ip

超supertest,我可以做一个resquest来testing我的node.js应用程序

var request = require('supertest'); var api = require('../server').app; ... it('json response', function(done){ request(api) .get('/api') .set('Accept', 'application/json') .expect('Content-Type', /json/) .end(function(err, res){ done(); }); }); 

我如何设置特定的IP来做testing请求?

  it('ip access denied', function(done){ request(api) .get('/api') .set('Accept', 'application/json') .expect('Content-Type', /json/) // set specific ip .end(function(err, res){ res.body.message.should.eql('Access denied'); done(); }); }); 

您可以设置通常包含IP地址, Remote-AddrX-Http-Forwarded-For 。 您的应用程序可能会检查这些标头中的一个或两个以确定IP地址。

 .set('Accept', 'application/json') .set('Remote-Addr', '192.168.2.1') 

假设你正在通过express检查一个带有req.ip的IP地址(尽pipe其他框架可能会performance相同),请在你的testing中用所需的IP地址设置X-Forwarded-For标题:

 .set('X-Forwarded-For', '192.168.2.1') 

您可能需要在服务器中启用信任代理选项:

 app.enable('trust proxy')