Javascript 如何在节点';什么是超级测试?

Javascript 如何在节点';什么是超级测试?,javascript,node.js,express,supertest,Javascript,Node.js,Express,Supertest,我的OAuth中间件希望在req.params中获取参数 request(app) .post('/api/token') .set('Content-Type', 'application/x-www-form-urlencoded') .send({grant_type:'password'}) .expect(200) .send({grant\u type:'password'})没有帮助。我不知道它是用来做什么的。express会自动放入stuffreq.params。如果您定义一个

我的OAuth中间件希望在req.params中获取参数

request(app)
.post('/api/token')
.set('Content-Type', 'application/x-www-form-urlencoded')
.send({grant_type:'password'})
.expect(200)

.send({grant\u type:'password'})
没有帮助。我不知道它是用来做什么的。

express会自动放入stuff
req.params
。如果您定义一个路由
something/:name
,那么它应该在
req.params.name
上。从:

此属性是一个对象,包含映射到命名对象的属性 路由“参数”。例如,如果您有route/user/:name, 然后,“name”属性作为req.params.name可用。这个物体 默认为{}

因此,如果您执行supertest示例

request(app)
.post('/api/token')
.set('Content-Type', 'application/x-www-form-urlencoded')
.send({grant_type:'password'})
.expect(200)

.send({grant\u type:'password'})
部分填充express中的
req.body
,而不是
req.params

对于相同的需求,您可以使用这样的supertest

const app = require('../server'),
chai = require('chai'),
should = require('should'),
request = require('supertest');

describe("/get /:userId", () => {
it("should fetch user by id successfully", (done) => {
    request(app)
        .get("/users/" + userId)
        // .query({ userId: userId })
        .set('Accept', 'application/json')
        .set({ 'x-access-token': token })
        .expect('Content-Type', /json/)
        .end((err, res) => {
            res.status.should.equal(200);
            // console.log("res.body.data.users = ",res.body)
            // res.body.should.a("object");
            res.body.data.should.have.property("users");
            done();
        });
});

}))

您可能必须传入您正在测试的实际
应用程序
对象,以便请求对象了解您的动态参数值