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 № 1temu 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.