5

私は優れたQUnitを使用しています。

JS アプリを(function () {})();サンドボックスに入れました。これにより、公開したくない多くのコードが隠されますが、そのコードもテストする必要があります。

これがどのように機能するかの例を次に示します。

(function () {  

    var PublicAPI = window.PublicAPI = {};        
    PublicAPI.publicFunction = function (foo) {
        PrivateAPI.privateFunction(foo);
        return 'bar';
    };

    var PrivateAPI = {};
    PrivateAPI.privateFunction: function (foo) {
       // Make secret stuff that never gets returned to the public
       // Could be an AJAX call.
    }

})();

ここでは簡単に単体テストを行うことができますPublicAPI.publicFunctionが、どのようにテストすればよいのでしょPrivateAPI.privateFunctionうか?

4

2 に答える 2

3

この同様の質問はそれをかなりうまくまとめています...最も簡単なのは、必要に応じて変更できるプライベートメソッドを扱わないことです...パブリックメソッドはテストが必要なものです。内部関数をテストしたい場合は、qunit が見つけられるように何らかのフックを残す必要があります。

于 2010-02-10T13:32:56.627 に答える
1

できません。その範囲外からアクセスする方法はありません。唯一の希望は、統合テスト、つまり、内部関数を使用しているグローバルに利用可能なオブジェクトの関数をテストすることです。

さらに良いことに、プライベート関数を作成しないでください。大したことは何ですか?

于 2010-02-10T13:37:42.480 に答える