9

使用 supertest,我可以请求测试我的 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 来发出测试请求?

  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();
      });
  });
4

2 回答 2

9

假设您正在使用 via express 检查 IP 地址req.ip(尽管其他框架可能会表现相同),X-Forwarded-For请在测试中使用所需的 IP 地址设置标头:

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

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

app.enable('trust proxy')
于 2016-01-04T08:58:46.973 回答
0

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

.set('Accept', 'application/json')
.set('Remote-Addr', '192.168.2.1')
于 2014-12-18T18:42:19.420 回答