有没有办法在超级测试中设置默认值?

问题描述 投票:0回答:2

我正在使用 supertest 模块来测试我的 Rest API。我的 API 一直发送 JSON。所以我对所有测试和每次测试都做

.expect('Content-Type', /json/)
!我一遍又一遍地重复!

这是我的一些代码

it('should list ALL permissions on /permissions GET', (done)=> {
    request(app)
        .get( permissionsURL )
        .expect(200)
        .expect('Content-Type', /json/)
        .end((err, res)=> {
            var permissions = res.body;
            permissions.should.be.an.instanceOf(Array);
            var permission = permissions[0];
            permission.should.be.json;
            permission.should.have.properties(['name', '_id']);
            permission.name.should.be.a.String();
            // permission.should.not.have.property('__v');

            done(err);
        });
});

it('should list a SINGLE permission on /permissions/<id> GET', (done)=> {
    request(app)
        .get( permissionsURL +savedPermissionId )
        .expect(200)
        .expect('Content-Type', /json/)
        .end((err, res)=> {
            var permission = res.body;
            permission.should.be.json;
            permission.should.have.properties(['name', '_id']);
            permission.name.should.be.a.String();
            // permission.should.not.have.property('__v')

            done(err);
        });
});

还有其他办法吗?有些人认为像 superagent-defaults 模块,但对于超级测试而不是超级代理?或者是否可以将 superagent-defaults 与 supertest 一起使用?

感谢您提供的任何帮助。 :)

javascript json node.js rest supertest
2个回答
1
投票

无法为所有测试设置此项。但是,如果您可以考虑为您期望返回 JSON 的每个端点进行一套测试,并且只在其中进行此 Expect 调用,那么您可以省略每个其他测试的 Expect。


0
投票

另一种解决方法:

// Define your repeated function
// Take "done" as parameter, and return your actual function
function lastTest(done) {
    return (err, res) => {
            var permission = res.body;
            permission.should.be.json;
            permission.should.have.properties(['name', '_id']);
            permission.name.should.be.a.String();
            done(err);
    }
}

it('should list ALL permissions on /permissions GET', (done) => {
    request(app)
        .get( permissionsURL )
        .expect(200)
        .expect('Content-Type', /json/, lastTest(done));
});
© www.soinside.com 2019 - 2024. All rights reserved.