如何使用超级测试模块测试对象的键和值
How to test key and value of object using supertest module
我有如下测试代码:
const mocha = require('mocha');
const describe = mocha.describe;
const it = mocha.it;
const chai = require('chai');
const request = require('supertest');
const app = require('../app.test');
chai.should();
describe('Get /histories', () => {
it('should return 200 status code', done => {
request(app)
.get('/client/profile')
.expect('Content-Type', /json/)
.expect(200, done);
});
it('should return code: 400', done => {
request(app)
.get('/client/profile')
.expect('Content-Type', /json/)
.expect(200)
.expect(res => {});
});
});
然后我使用 Express 响应自定义状态代码:
return res.json({
code: 400
})
因此我想测试测试代码是否有代码作为对象的键,值为 400 作为数字。
如何编写这个测试?
我想这就是您要找的。如果您需要更多信息,请告诉我。
it('should return code: 400', async (done) => {
var resp = await request(app)
.get('/client/profile')
expect(resp.statusCode).to.equal(400)
expect(resp.body.code).to.equal(400)
});
resp.statusCode
是http响应码。
resp.body
是响应主体。由于这是 json,因此 json 的响应将具有 code
。
你可以使用这个:
it('should return code: 400', (done) => {
request(app)
.get('/client/profile')
.expect('Content-Type', /json/)
.expect(200)
.end((err, res) => {
if (err) {
return done(err);
}
expect(res.code).to.be.equal(400);
return done();
});
});
我有如下测试代码:
const mocha = require('mocha');
const describe = mocha.describe;
const it = mocha.it;
const chai = require('chai');
const request = require('supertest');
const app = require('../app.test');
chai.should();
describe('Get /histories', () => {
it('should return 200 status code', done => {
request(app)
.get('/client/profile')
.expect('Content-Type', /json/)
.expect(200, done);
});
it('should return code: 400', done => {
request(app)
.get('/client/profile')
.expect('Content-Type', /json/)
.expect(200)
.expect(res => {});
});
});
然后我使用 Express 响应自定义状态代码:
return res.json({
code: 400
})
因此我想测试测试代码是否有代码作为对象的键,值为 400 作为数字。
如何编写这个测试?
我想这就是您要找的。如果您需要更多信息,请告诉我。
it('should return code: 400', async (done) => {
var resp = await request(app)
.get('/client/profile')
expect(resp.statusCode).to.equal(400)
expect(resp.body.code).to.equal(400)
});
resp.statusCode
是http响应码。
resp.body
是响应主体。由于这是 json,因此 json 的响应将具有 code
。
你可以使用这个:
it('should return code: 400', (done) => {
request(app)
.get('/client/profile')
.expect('Content-Type', /json/)
.expect(200)
.end((err, res) => {
if (err) {
return done(err);
}
expect(res.code).to.be.equal(400);
return done();
});
});