Mocha.js和Should.js来测试express.js应用程序

时间:2013-07-15 10:11:46

标签: testing express mocha should.js

如何使用Mocha.js和Should.js有效地测试我的express.js应用程序是否正在发回正确的数据?

我问的原因是,有时,如果req.xhr我们发回相同的数据但是采用不同的格式,这取决于路线的扩展名。因此,出于这个原因,我们希望确保路线在给定的情况下表现出正确的条件。

有什么方法可以让我发送回来的结果可以被should.js读取吗?

1 个答案:

答案 0 :(得分:2)

您可以使用mocha和request来进行端到端的HTTP测试。这是一个示例,其中app.js运行服务器:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; // Avoids DEPTH_ZERO_SELF_SIGNED_CERT error for self-signed certs
var request = require('request').defaults({ encoding: null });
var fs = require('fs');
var expect = require('expect.js');
var app = require("../../app.js");
var hash = function (file) { crypto.createHash('sha1').update(file).digest('hex') };

describe('Static tests', function () {
    it('should serve out the correct favicon', function (done) {
        var favicon = fs.readFileSync(__dirname + '/../../../public/img/favicon.ico');
        request.get('https://localhost:' + process.env.PORT + '/favicon.ico', function (err, res, body) {
            expect(res.statusCode).to.be(200);
            expect(hash(body)).to.be(hash(favicon));
            done();
        });
    });
});