15

クロージャー内に存在するJavaScript関数を単体テストすることは可能ですか?たとえば、次の場合:

(function() {
  var a = function() {
    //do something
  }
  window.b =  function() {
    // do something else
  }
})();

関数を公開せずに単体テストすることは可能ですか? そうでない場合、テストモードでのみ公開する良い方法はありますか?

4

3 に答える 3

8

匿名関数は、テストモードでない場合は未定義のパラメーターを取り、このパラメーターがオブジェクトになると言うことができます。直接a公開せずにオブジェクトを 'sで埋めることができます。a

ちょうど私の.02ドル

于 2011-07-08T14:54:34.887 に答える
3

ここでの最大の質問は、なぜそれを隠したいのかということです。テストしたいこの関数aがあるという事実は、テストする必要がある独自の責任があることを示しています。それを引き出してテスト下に置くことは、それを暴露する最小のリスクと比較して、はるかに多くの価値を獲得します。本当に非表示にしておきたい場合は、Manuxの応答に似たものを提案します。この場合、オブジェクトを作成して、オブジェクトを作成しますが、オブジェクトは直接公開しません。次に、そのオブジェクトをテストすることで、の動作をテストできます。

于 2011-07-08T15:58:48.753 に答える