2016-07-26 3 views
0

は、私は次のコードを発見した記述スイート内:内側の内beforeEach(inject(function(...)))を使用したAngularjsの依存性注入。ジャスミンといくつかのJSユニットテストを見ると

describe("suiteName", function() { 

var $controller; 

beforeEach(inject(function(_$controller_) { 
    $controller = _$controller_; 
})); 

describe(....); 
describe(....); 


}); 

を説明し、変数$controllerは、「バインド」コントローラにいつかいくつかの仕様it内で使用されます参照へのフィールド:私はinject(..)がグローバル変数$controller_$controller_を注入し、いくつかの依存性の注入を行っていることを前提とし、beforeEach

$controller('controllerUniqueName', { 

     controllerField1: reference1, 
     controllerField2: reference2, 
     ... 
} 

はちょうど各sの前にそれを行うには言っています後に続く各記述スイートにはitというペースがあります。

誰かが依存性注入がどのように解決されるのか説明できますか?

特に、の場合、と同じですか?

EDIT 1:注入ブロックを取り外すと、ユニットテストはメッセージTypeError: $controller is not a functionで失敗します。

** EDIT 2:私はsomethingユニットテストに_controller_を変更した場合** Error: [$injector:unpr] Unknown provider: $somethingProvider <- $something

答えて

1

_$controller_$controller service instanceに等しいメッセージで失敗します。

Underscoredサービス別名は、このパターンを可能にするために角度インジェクターによりsupported次のとおりです。

var $controller; 
... 
$controller = _$controller_; 

somethingサービスがロードされたモジュール内に存在しない場合は、[$injector:unpr] Unknown provider: $somethingProvider <- $somethingエラーがスローされます。

関連する問題