【问题标题】:How to test path parameters of a GET request with NodeJS's supertest?如何使用 NodeJS 的 supertest 测试 GET 请求的路径参数?
【发布时间】:2017-10-09 11:42:31
【问题描述】:

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

例如:

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

    });
});

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

【问题讨论】:

    标签: node.js rest testing supertest


    【解决方案1】:

    您必须提供:parameter 的实际号码。例如

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

    毕竟需要为端点提供真实值。 req.params.parameter 在端点函数中将是 1234。

    我不完全确定您不修复参数的意思。您想使用一个变量来使测试可重复用于多个参数吗?那我就干脆做

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

    【讨论】:

      猜你喜欢
      • 2021-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 2020-02-15
      • 1970-01-01
      相关资源
      最近更新 更多