繁体   English   中英

摩卡单元测试路线返回200 OK

[英]Mocha unit testing routes return 200 ok

我正在使用mocha来测试我添加到服务器的某些路由是否返回200 ok,以及响应是否包含字符串。 我以以下方式执行此操作:

var testDBRoute = function(link, routeName) {
    it('should return 200 OK for ' + routeName, function (done) {
        http.get(link, function (res) {
            assert.equal(200, res.statusCode);
            done();
        })
    });

    it('should return the correct info',
        function(done) {
            http.get(link, function (res) {
                var body = '';

                res.on('data', function(chunk) {
                    body += chunk;
                });

                res.on('end', function() {
                    var response = JSON.parse(body);
                    assert.equal('abc', response.id);   
                    done();
                });
            });

        }
    )
    };

我以相同的方式调用此函数6次:

describe('/link1', function () {
            var link = HOST + '/api/link1/';
            testDBRoute(link, 'link1');
});

无论请求的顺序如何,它总是在第8个测试中失败,这意味着它正在发出8个http get请求,然后由于以下错误而失败:

错误:超过2000毫秒的超时值(空值)。 (\\ node_modules \\ mocha \\ lib \\ runnable.js:158:19)在Timer.listOnTimeout [作为ontimeout](timers.js:112:15)

我必须指定要在Windows上运行测试。

我已经解决了使用superTest替换这样的http的问题

var request = require('supertest');
var app = require('../server');
// app is the express context from the server
    describe('GET /api', function () {
        it('test api', function (done) {
            request(app)
                .get('/api')
                .end (function (err, res) {
                     assert.equal(200, res.statusCode);
                     done();
                 });
        });
    });

所以看来问题出在http模块中...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM