Sono un principiante di test dell'unità Jasmine/AngularJS. Ho creato una semplice app angolare per aggiungere due numeri in modo da poter imparare come scrivere test unitari per l'Angular App. Il Angular Doc on unit test is incomplete. Basati sui blog e le risposte di overflow dello stack, costruisco il mio primo test e sto correndo in errore non definito 'injector'. Sto usando il framework Jasmine per il test delle unità.
HTMLperché ottengo l'errore "iniettato" non definito quando si utilizza Jasmine con Angular?
<body>
<div ng-controller="additionCtrl">
First Number: <input ng-model="NumberOne"/><br/>
Second Number: <input ng-model="NumberTwo"/>
<button ng-click="add(NumberOne, NumberTwo)">Add</button><br/>
Result: {{Result}}
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<script src="Scripts/additionCtrl.js"></script>
</body>
Controller:
function additionCtrl($scope) {
$scope.NumberOne = 0;
$scope.NumberTwo = 0;
$scope.Result = 0;
$scope.add = function (a, b) {
};
}
file spec Jasmine.
describe("Addition", function() {
var $scope, ctrl;
beforeEach(inject(function ($rootScope, $controller) {
this.scope = $rootScope.$new();
ctrl = $controller('additionCtrl', {
$scope: this.scope
});
}));
it("should add two integer numbers.", inject(function ($controller) {
expect(ctrl.add(2, 3)).toEqual(5);
}));
});
Specrunner.html
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<script type="text/javascript" src="lib/angular-mocks.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine-html.js"></script>
<!-- include source files here... -->
<script type="text/javascript" src="../App/Scripts/additionCtrl.js"></script>
<!-- include spec files here... -->
<script type="text/javascript" src="spec/addition.spec.js"></script>
Questo è un test in mancanza e una volta che il test non riesce con il risultato atteso allora posso modificare il codice per farlo passare, ma sto affrontando il problema con qualche modo il mock angolare non ottiene l'iniettore.
Ho visto un esempio in cui posso aggiornare un controller invece di utilizzare l'iniettore, ma mi piacerebbe provare a imparare sull'uso dell'iniettore in modo da impostare test più complessi.
Potrei mancare qualcosa di semplice qui. Per favore, indirizzami a qualsiasi articolo che potrei aver perso.
Grazie
Questo è quello che cercavo da tempo :) – Nair