如何使用NodeJS的超者来测试GET请求的路径参数?

时间:2017-10-09 11:42:32

标签: node.js rest testing supertest

我找到了如何测试查询参数的示例

e.g:

/api/browser?parameter1=2341&parameter2=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();
            });

    });
});

在调用parameter之前,是否可以知道restApi.get()的值?

1 个答案:

答案 0 :(得分:1)

您必须提供:parameter的实际数字。例如

restApi.get('/api/browser/1234')

毕竟,端点需要提供实际值。然后,req.params.parameter将在端点函数中为1234。

我不确定你没有修复参数是什么意思。是否要使用变量使测试可重用于多个参数?那我就干脆做了

let parameter = 1234;
restApi.get('/api/browser/' + parameter)