如何用NodeJS的supertest测试GET请求的路径参数?
How to test path parameters of a GET request with NodeJS's supertest?
我找到了如何测试查询参数的示例
例如:
/api/browser?parameter1=2341¶meter2=5663
但是如果我有一个路径参数,我找不到如何参数化测试,URL 像这样:
const ENDPOINT_DETAILS = "/api/browser/:parameter";
app.get(ENDPOINT_DETAILS, function (req, res) {
logger.info("Endpoint called: " + ENDPOINT_DETAILS);
var details = {}
// ... magic
res.send(details);
}
如果我不想修复我的参数,我的测试应该是什么样的?
describe("returns details", function() {
it("returns status 200", function(done) {
var sampleData = "sample_detail";
// this won't work
restApi.get('/api/browser/:parameter')
.set('Accept', 'application/json')
.expect(200, { "text" : "Detail of " + parameter + " is: " + sample_text})
.end(function(err, res) {
if (err) throw err;
done();
});
});
});
是否可以在调用 restApi.get()
之前知道此处 parameter
的值?
您必须提供 :parameter
的实际数字。例如
restApi.get('/api/browser/1234')
毕竟端点需要提供真实值。 req.params.parameter
将在端点函数中变为 1234。
我不太清楚你说的不修复参数是什么意思。您想使用变量使测试可重复用于多个参数吗?然后我会简单地做
let parameter = 1234;
restApi.get('/api/browser/' + parameter)
我找到了如何测试查询参数的示例
例如:
/api/browser?parameter1=2341¶meter2=5663
但是如果我有一个路径参数,我找不到如何参数化测试,URL 像这样:
const ENDPOINT_DETAILS = "/api/browser/:parameter";
app.get(ENDPOINT_DETAILS, function (req, res) {
logger.info("Endpoint called: " + ENDPOINT_DETAILS);
var details = {}
// ... magic
res.send(details);
}
如果我不想修复我的参数,我的测试应该是什么样的?
describe("returns details", function() {
it("returns status 200", function(done) {
var sampleData = "sample_detail";
// this won't work
restApi.get('/api/browser/:parameter')
.set('Accept', 'application/json')
.expect(200, { "text" : "Detail of " + parameter + " is: " + sample_text})
.end(function(err, res) {
if (err) throw err;
done();
});
});
});
是否可以在调用 restApi.get()
之前知道此处 parameter
的值?
您必须提供 :parameter
的实际数字。例如
restApi.get('/api/browser/1234')
毕竟端点需要提供真实值。 req.params.parameter
将在端点函数中变为 1234。
我不太清楚你说的不修复参数是什么意思。您想使用变量使测试可重复用于多个参数吗?然后我会简单地做
let parameter = 1234;
restApi.get('/api/browser/' + parameter)