gpt4 book ai didi

node.js - 从 SuperTest 获取特定响应属性

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:51 24 4
gpt4 key购买 nike

我希望能够获取一些响应属性,并有时使用 SuperTest 将它们放入变量中。我怎样才能做到这一点?除了对响应的断言之外,我没有看到文档执行任何操作。

例如我想做这样的事情:

 var statusCode = request(app).get(uri).header.statusCode;

我想做这样的事情。因为有时我喜欢将断言分成单独的 Mocha.js it() 测试,因为我正在执行 BDD,因此本例中的“Thens”基于预期的响应部分,因此每个测试都会检查响应中返回的特定状态。

例如,我想用 super 测试来做到这一点:

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 库。

关于node.js - 从 SuperTest 获取特定响应属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31523502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com