私はNode.jsを学習している最中で、Expressで遊んでいます。本当にフレームワークが好きですが、ルートのユニット/統合テストを書く方法を理解するのに苦労しています。
単純なモジュールを単体テストできることは簡単で、Mochaでそれを行ってきました。ただし、渡した応答オブジェクトは値を保持しないため、Expressを使用した単体テストは失敗します。
テスト中のルート関数(routes / index.js):
exports.index = function(req, res){
res.render('index', { title: 'Express' })
};
単体テストモジュール:
var should = require("should")
, routes = require("../routes");
var request = {};
var response = {
viewName: ""
, data : {}
, render: function(view, viewData) {
viewName = view;
data = viewData;
}
};
describe("Routing", function(){
describe("Default Route", function(){
it("should provide the a title and the index view name", function(){
routes.index(request, response);
response.viewName.should.equal("index");
});
});
});
これを実行すると、「エラー:グローバルリークが検出されました:viewName、データ」で失敗します。
これを機能させるためにどこで問題がありますか?
このレベルでコードを単体テストするためのより良い方法はありますか?
更新 1.最初に「it()」を忘れたため、コードスニペットを修正しました。