如何使用supertest发送查询字符串参数?

J K*_*J K 16 supertest

我正在使用supertest发送获取查询字符串参数,我该怎么做?

我试过了

var imsServer = supertest.agent("https://example.com");

imsServer.get("/")
  .send({
    username: username,
    password: password,
    client_id: 'Test1',
    scope: 'openid,TestID',
    response_type: 'token',
    redirect_uri: 'https://example.com/test.jsp'
  })
  .expect(200) 
  .end(function (err, res) {
    // HTTP status should be 200
    expect(res.status).to.be.equal(200);
    body = res.body;
    userId = body.userId;
    accessToken = body.access_token;
    done();
  });
Run Code Online (Sandbox Code Playgroud)

但没有发送参数username,password,client_id作为查询字符串到端点.有没有办法使用supertest发送查询字符串参数?

Rob*_* T. 52

虽然supertest没有详细记录,但您可以查看tests/supertest.js.

那里有一个仅用于查询字符串的测试套件.

就像是:

request(app)
  .get('/')
  .query({ val: 'Test1' })
  .expect(200, function(err, res) {
    res.text.should.be.equal('Test1');
    done();
  });
Run Code Online (Sandbox Code Playgroud)

因此:

.query({
  key1: value1,
  ...
  keyN: valueN
})
Run Code Online (Sandbox Code Playgroud)

应该管用.

  • @vinhboy这可能是因为supertest只是添加了expect()函数的'superagent`.如果你查看superagent的文档https://visionmedia.github.io/superagent/,你可以看到用例子描述的查询功能. (8认同)
  • 在README中没有提到这个简单的功能是多么愚蠢.让我想知道我是否误解了一些关于超级的东西. (2认同)
  • @imsheth 如果您使用“post()”,那么相应的函数是“send()”,而不是“query()”。例如,尝试 `.post('/users/data').send('lang=in')`。 (2认同)