我已经为get请求编写了一个测试,但希望获得此测试的“完整覆盖范围”。基本上,我想使用像JSON Schema这样的东西来验证JSON返回是否符合我的期望。
到目前为止我的代码如下:
var winston = require('winston');
//var chai = require('chai');
var request = require('supertest-as-promised');
var testUtils = require('./utils/test_utils');
var API_ROOT = 'http://localhost:8000/mywebsite';
var agent = request(API_ROOT);
describe('/my-profile/', function(){
describe('GET', function() {
var url = '/my-profile/';
it('should return valid payload', function(done) {
agent.
get(url).
set('Content-Type', 'application/json').
expect('Content-Type', /json/).
expect(200).
// then(testUtils.logResponse).
then(function(res) {
done();
}).catch(function(err) {
// winston.log(res).then(done);
done(err);
});
});
});
});如何使用json模式进行验证。有什么样例链接吗?有什么意见?代码?
发布于 2016-04-09 02:21:24
您可以尝试使用Chai json-schema plugin。这样我们就可以做出如下断言:
expect(goodApple).to.be.jsonSchema(fruitSchema); expect(badApple).to.not.be.jsonSchema(fruitSchema)
有关详细信息,请参阅网站。
发布于 2015-02-21 13:45:42
您说要使用“类似”的json schema来验证返回的JSON,那么Chai断言将非常适合这项任务。
只需使用属性链测试是否存在属性,或者使用instanceof链检查它们的类型是否正确。如果您确切地知道api应该为给定的测试用例返回什么,请构造一个匹配的对象,并将其与深层链进行比较。
https://stackoverflow.com/questions/28631959
复制相似问题