从 SuperTest 中获取特定的响应属性
Grab specific response properties from SuperTest
我希望能够使用 SuperTest 获取一些响应属性并将它们有时放入变量中。我怎样才能做到这一点?除了对响应的断言,我没有看到文档做任何事情。
例如我想做这样的事情:
var statusCode = request(app).get(uri).header.statusCode;
我想做这样的事情。因为有时我喜欢将断言分成单独的 Mocha.js it() 测试,因为我正在做 BDD,所以在这种情况下 'Thens' 是基于预期的响应部分,所以每个测试正在检查响应中返回的某个状态。
例如,我想用 supertest 做这个:
var response = request(app).get(uri);
it('status code returned is 204, function(){
response.status.should.be....you get the idea
};
it('data is a JSON object array', function(){
};
这里是一个例子,你可以如何完成你想要的:
服务器文件app.js
:
var express = require('express');
var app = express();
var port = 4040;
var items = [{name: 'iphone'}, {name: 'android'}];
app.get('/api/items', function(req, res) {
res.status(200).send({items: items});
});
app.listen(port, function() {
console.log('server up and running at %s:%s', app.hostname, port);
});
module.exports = app;
test.js
:
var request = require('supertest');
var app = require('./app.js');
var assert = require('assert');
describe('Test API', function() {
it('should return 200 status code', function(done) {
request(app)
.get('/api/items')
.end(function(err, response) {
if (err) { return done(err); }
assert.equal(response.status, 200);
done();
});
});
it('should return an array object of items', function(done) {
request(app)
.get('/api/items')
.end(function(err, response) {
if (err) { return done(err); }
var items = response.body.items;
assert.equal(Array.isArray(items), true);
done();
});
});
it('should return a JSON string of items', function(done) {
request(app)
.get('/api/items')
.end(function(err, response) {
if (err) { return done(err); }
try {
JSON.parse(response.text);
done();
} catch(e) {
done(e);
}
});
});
});
您可以查看一些示例 here on the superagent
github library,因为 supertest
基于 superagent
库。
我希望能够使用 SuperTest 获取一些响应属性并将它们有时放入变量中。我怎样才能做到这一点?除了对响应的断言,我没有看到文档做任何事情。
例如我想做这样的事情:
var statusCode = request(app).get(uri).header.statusCode;
我想做这样的事情。因为有时我喜欢将断言分成单独的 Mocha.js it() 测试,因为我正在做 BDD,所以在这种情况下 'Thens' 是基于预期的响应部分,所以每个测试正在检查响应中返回的某个状态。
例如,我想用 supertest 做这个:
var response = request(app).get(uri);
it('status code returned is 204, function(){
response.status.should.be....you get the idea
};
it('data is a JSON object array', function(){
};
这里是一个例子,你可以如何完成你想要的:
服务器文件app.js
:
var express = require('express');
var app = express();
var port = 4040;
var items = [{name: 'iphone'}, {name: 'android'}];
app.get('/api/items', function(req, res) {
res.status(200).send({items: items});
});
app.listen(port, function() {
console.log('server up and running at %s:%s', app.hostname, port);
});
module.exports = app;
test.js
:
var request = require('supertest');
var app = require('./app.js');
var assert = require('assert');
describe('Test API', function() {
it('should return 200 status code', function(done) {
request(app)
.get('/api/items')
.end(function(err, response) {
if (err) { return done(err); }
assert.equal(response.status, 200);
done();
});
});
it('should return an array object of items', function(done) {
request(app)
.get('/api/items')
.end(function(err, response) {
if (err) { return done(err); }
var items = response.body.items;
assert.equal(Array.isArray(items), true);
done();
});
});
it('should return a JSON string of items', function(done) {
request(app)
.get('/api/items')
.end(function(err, response) {
if (err) { return done(err); }
try {
JSON.parse(response.text);
done();
} catch(e) {
done(e);
}
});
});
});
您可以查看一些示例 here on the superagent
github library,因为 supertest
基于 superagent
库。