17

現在、nodejs アプリケーションのテストをいくつか書いています。次のようなモジュールがあるとします。

module.exports = function myModule(moduleParam) {
    var someVar;
    ....
    ....
    function helper(param) {
        return param + someVar;
    }
    return {
        doSomething: function (bar) {
            ....
            ....
            var foo = helper(bar);
            ....
            ....
        }
    };
};

「ヘルパー」関数はモジュール内でのみ有用であり、外部に公開すべきではないと仮定します。

それをテストするための「ベストプラクティス」は何ですか? (もちろん、doSomething 関数全体をテストすることもできますが、この方法では、「ヘルパー」関数は特定の状況で、「ブラック ボックス」方式でテストされます)。

そのメーターのテスト フレームワークとして nodeunit を使用していますが、必要に応じて変更できます。

4

2 に答える 2

24

あなたはそれをテストしません。単体テストはブラック ボックス テストです。これは、テストする唯一のものは、コントラクトとも呼ばれるパブリック インターフェイスであることを意味します。

このようなプライベート関数は、パブリック関数をリファクタリングすることによってのみ発生します。

したがって、TDD を使用すると、プライベート関数が暗黙的にテストされます。

これが間違っていると感じる場合、ほとんどの場合、構造が間違っていることが原因です。次に、プライベートなものを追加のモジュールに移動することを検討する必要があります。

于 2013-03-10T17:50:33.700 に答える