1

index.html に angular-mocks.js を含めると、ngMock はそれ自体を自動的に含める魔法を実行します。

ファイルをインクルードし、モジュールの依存関係を編集する必要がないだけで、angular にモジュールをテスト モードでロードさせる最も簡単な方法は何ですか。

4

1 に答える 1

2

モジュールをロードする唯一の方法は、 を呼び出すことangular.module(...)です。ngMocksは、以下を呼び出して「それ自体」をロードします。

angular.module('ngMock', ['ng']).provider(...).config(...);

モジュールをロードするために、モジュールを依存関係として宣言する必要はありません。angular.module('<moduleName>', [<moduleDependencies>...]);そのスクリプトに含めることができます。


「またはngMockを使用してロードされたモジュールの依存関係リストに自動的に追加される方法」を意味する場合、依存関係のリストを取得して先頭に追加するように、カスタムインジェクターを作成するためです。window.moduleangular.mock.modulengMocks'ngMock'

window.inject = angular.mock.inject = function() {
  ...
  return isSpecRunning() ? workFn() : workFn;
  ...
  function workFn() {
    var modules = currentSpec.$modules || [];

    modules.unshift('ngMock');   // <-- this line does the trick
    modules.unshift('ng');
    ...

インスタンス化する前に依存関係のリストにモジュールを追加する独自の関数を作成することもできますが、これがテストに役立つとは思えません。それどころか、これはもう 1 つのエラーの原因になります (依存関係エラーが「隠れる」可能性があります)。

于 2014-01-22T11:14:04.150 に答える