2017-07-05 11 views
0

jsファイルのほとんどのコード構造が次のようになっている既存のノードプロジェクトで作業しています。外部モジュールを使用したJavaScriptユニットテスト

var mod1 = require("mod1"); 
    var mod2 = require("mod2"); 
    var modn = require("moden"); 


    function func1(data, callback) { 
     // Do some validation with data etc.. 
     // Use one or more imported modules here 

    } 

    function func2(data, callback) { 
     // Do some validation with data etc.. 
     // Use one or more imported modules here 

    } 


    exports.func1 = func1 
    exports.func2 = func2 

ユニットテストfunc1は、インポートされたモジュールに依存しないが、どのようにしてテストできますか?どのように私は嘲笑/それらをスタブすることができますか? 私はJavaの世界から来ているので、私は嘲笑の概念に精通していますが、ここではrequireを使ってどのようにグローバルに宣言されたモジュールのインポートを模倣できるのかよくわかりません。

現在、ユニットテストの目的でnodeunitを使用していますが、コードのごく一部をテストしています。

私はsimon.jsとtestdoubleについて読んでいますが、それらを使ってグローバル変数を模倣する方法はわかりません。

お手伝い、ご指摘ありがとうございます。テスト中の依存関係をオーバーライドするために

+0

私はsuppです'func1'は' mod1'のように内部的にいくつかの機能を使います。 'func1'が必要なモジュールに依存する場合。実際の依存関係を使用する代わりに、なぜそれを模擬したいのですか? –

+1

http://sinonjs.org/how-to/link-seams-commonjs/ –

+1

https://github.com/testdouble/testdouble.js/blob/master/docs/7-replacing-dependencies.md#replacing- test-double-with-real-dependencies- –

答えて

0

は私が迅速exmpleについてはhttps://github.com/thlorenz/proxyquireモジュール

私は、プロジェクトのgithubの

foo.js:

var path = require('path'); 

module.exports.extnameAllCaps = function (file) { 
return path.extname(file).toUpperCase(); 
}; 

module.exports.basenameAllCaps = function (file) { 
return path.basename(file).toUpperCase(); 
} 

foo.test.js:

var proxyquire = require('proxyquire') 
, assert  = require('assert') 
, pathStub = { }; 

// when no overrides are specified, path.extname behaves normally 
var foo = proxyquire('./foo', { 'path': pathStub }); 
assert.equal(foo.extnameAllCaps('file.txt'), '.TXT'); 
から例を貼り付けるあなたの状況で使用することをお勧めします
関連する問題