使用超级代理查询参数
Query parameter using superagent
我正在创建一个小型 Node.js 应用程序,它使用 Superagent (v5.1.2) 调用一些 REST api。我需要发送带有获取请求的过滤器选项。
API端点需要以下结构:
endpoint-url/test?filter=_name eq 'testname'
我正在努力使用带有内置查询方法的超级代理来实现这个结果。当我发送请求时,我将返回所有项目,因此过滤器选项没有任何效果。一旦我通过邮递员对其进行测试,我将只获得与 _name = 'testname'
.
一起返回的指定项目
这是我的代码片段
let name = 'testname';
superagent.get('endpoint-url/test')
.authBearer(token)
.query({'filter': '_name eq ' + name})
.then(res => {
...
})
.catch(err => {
...
});
这是一个最小的工作示例:
app.js
:
const express = require("express");
const app = express();
const memoryDB = {
users: [{ name: "testname" }, { name: "haha" }],
};
app.get("/test", (req, res) => {
console.log(req.query);
const filterName = req.query.filter.split("eq")[1].trim();
const user = memoryDB.users.find((user) => user.name === filterName);
res.status(200).json(user);
});
module.exports = app;
app.test.js
:
const app = require("./app");
const superagent = require("superagent");
const { expect } = require("chai");
describe("59246379", () => {
let server;
before((done) => {
server = app.listen(3003, () => {
console.info(`HTTP server is listening on http://localhost:${server.address().port}`);
done();
});
});
after((done) => {
server.close(done);
});
it("should pass", () => {
let name = "testname";
return superagent
.get("http://localhost:3003/test")
.query({ filter: "_name eq " + name })
.then((res) => {
expect(res.status).to.be.equal(200);
expect(res.body).to.be.eql({ name: "testname" });
});
});
});
集成测试结果与覆盖率报告:
59246379
HTTP server is listening on http://localhost:3003
{ filter: '_name eq testname' }
✓ should pass (46ms)
1 passing (57ms)
-------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
-------------|----------|----------|----------|----------|-------------------|
All files | 100 | 100 | 100 | 100 | |
app.js | 100 | 100 | 100 | 100 | |
app.test.js | 100 | 100 | 100 | 100 | |
-------------|----------|----------|----------|----------|-------------------|
源代码:https://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/Whosebug/59246379
我正在创建一个小型 Node.js 应用程序,它使用 Superagent (v5.1.2) 调用一些 REST api。我需要发送带有获取请求的过滤器选项。
API端点需要以下结构:
endpoint-url/test?filter=_name eq 'testname'
我正在努力使用带有内置查询方法的超级代理来实现这个结果。当我发送请求时,我将返回所有项目,因此过滤器选项没有任何效果。一旦我通过邮递员对其进行测试,我将只获得与 _name = 'testname'
.
这是我的代码片段
let name = 'testname';
superagent.get('endpoint-url/test')
.authBearer(token)
.query({'filter': '_name eq ' + name})
.then(res => {
...
})
.catch(err => {
...
});
这是一个最小的工作示例:
app.js
:
const express = require("express");
const app = express();
const memoryDB = {
users: [{ name: "testname" }, { name: "haha" }],
};
app.get("/test", (req, res) => {
console.log(req.query);
const filterName = req.query.filter.split("eq")[1].trim();
const user = memoryDB.users.find((user) => user.name === filterName);
res.status(200).json(user);
});
module.exports = app;
app.test.js
:
const app = require("./app");
const superagent = require("superagent");
const { expect } = require("chai");
describe("59246379", () => {
let server;
before((done) => {
server = app.listen(3003, () => {
console.info(`HTTP server is listening on http://localhost:${server.address().port}`);
done();
});
});
after((done) => {
server.close(done);
});
it("should pass", () => {
let name = "testname";
return superagent
.get("http://localhost:3003/test")
.query({ filter: "_name eq " + name })
.then((res) => {
expect(res.status).to.be.equal(200);
expect(res.body).to.be.eql({ name: "testname" });
});
});
});
集成测试结果与覆盖率报告:
59246379
HTTP server is listening on http://localhost:3003
{ filter: '_name eq testname' }
✓ should pass (46ms)
1 passing (57ms)
-------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
-------------|----------|----------|----------|----------|-------------------|
All files | 100 | 100 | 100 | 100 | |
app.js | 100 | 100 | 100 | 100 | |
app.test.js | 100 | 100 | 100 | 100 | |
-------------|----------|----------|----------|----------|-------------------|
源代码:https://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/Whosebug/59246379