node.js - 如何用NodeJS的supertest测试GET请求的路径参数?

标签 node.js rest testing supertest

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

例如:

/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 的值?

最佳答案

您必须为 :parameter 提供一个实际数字。例如

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

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

我不太确定您所说的不修复参数是什么意思。您想使用变量使测试可重复用于多个参数吗?那我就简单的做

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

关于node.js - 如何用NodeJS的supertest测试GET请求的路径参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46645616/

相关文章:

node.js - node js sequelize where条件如果不等于 checkin

node.js - 在 Nodejs 中上传文件时,Formidable 不会 form.parse()

javascript - 使用 Javascript 模拟 API 调用

rest - Odata(V4) 操作是否只能通过 POST 调用?

php - 可以在 Travis CI 中使用自定义变量吗?

node.js - 'this' 在 Mongoose 预保存 Hook 中未定义

node.js - nodejs - 永远扫描目录以查找新文件

java - 使用 inbuild 注入(inject)的 Jersey 自定义方法参数注入(inject)

ruby-on-rails - 如何使用 poltergeist 和 Capybara 测试 Stripe.js?

.net - 为什么 "dotnet test"在 ubuntu LTS 14.04 上失败?