/ / Inject function in angularjs - angularjs, jaśmin

Funkcja Inject w angularjs - angularjs, jaśmin

Jestem testerem unit angularjs kontrolującym jaśmin, karma .... testowa próbka wygląda następująco:

     beforeEach(inject(function(_$rootScope_, _$controller_){
$rootScope = _$rootScope_;
$scope = $rootScope.$new();
$controller = _$controller_;
$controller("AboutController", {"$rootScope" : $rootScope, "$scope": $scope});
}));

Tutaj jestem zdezorientowany, jak doszło do jaśminuo funkcji wstrzykiwania? Czy jest to obiekt o tej samej funkcji, co kątowy Injector.inject () ... Jestem zaskoczony, że metoda jest dostępna poza zakrzywioną przestrzenią nazw ... i co robi Kontroler $ zmienna wprowadzona do funkcji?

Odpowiedzi:

2 dla odpowiedzi № 1

temu inject Funkcja jest częścią Skośne drwi pakiet (ngMock). Prawdopodobnie ten został dodany do Twojego pliku karma.conf.js celu uzyskania jasmine badania skonfigurowany.Tak w ten sposób iniekcji jest nie dostępne w produkcji kod skośne, jest tylko używany do testowania jednostek.

Ten pakiet dodaje inject do obiektu window (globalne) dla wygody podczas testowania.

Z dokumentów:

Uwaga: Ta funkcja jest też publikowana na oknie łatwy dostęp.

Po więcej informacji tutaj jest dokumentacja.

Jeśli chodzi o drugie pytanie: $controller usługa pozwala na zainicjowanie (nazwane kontrolera"AboutController" w Twoim przykładzie) i przekazać w nim "s zależności. Uzyskiwania dojścia $scope jest często niezbędne podczas testowania kontrolerów.