2013-07-15 56 views
2

如何使用Mocha.js和Should.js來有效地測試我的express.js應用程序是否發回正確的數據?Mocha.js和Should.js來測試express.js應用程序

我問的原因是,有時,如果req.xhr我們發回相同的數據,但採用不同的格式,具體取決於路由的擴展名。所以,出於這個原因,我們希望確保這些路線在所給出的情況下正在執行正確的條件。

有沒有什麼辦法可以讓我快速發送結果回來,可以通過should.js讀取?

回答

2

您可以使用mocha和請求進行端到端的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(); 
     }); 
    }); 
});