使用json架构的mocha全覆盖测试

时间:2015-02-20 14:59:18

标签: javascript api integration-testing mocha

我已经为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架构进行验证。任何样本链接?评论?码?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Chai json-schema plugin。这让你做出如下的断言:

expect(goodApple).to.be.jsonSchema(fruitSchema); expect(badApple).to.not.be.jsonSchema(fruitSchema)

有关详细信息,请访问网站。

答案 1 :(得分:0)

你说你想用某些东西"喜欢" json模式验证返回的JSON,好吧,Chai断言很适合这个任务。

只需使用属性链测试属性是否存在,或使用instanceof链检查它们的类型是否正确。如果您确切知道api应该为给定的测试用例返回什么,请构造一个匹配的对象并将其与深链进行比较。