jasmine + angular ex 6
by ronapelbaum
HTML
<script src="https://jasmine.github.io/2.4/lib/jasmine.js"></script>
<script src="https://jasmine.github.io/2.4/lib/jasmine-html.js"></script>
<script src="https://jasmine.github.io/2.4/lib/boot.js"></script>
<link rel="stylesheet" href="https://jasmine.github.io/2.4/lib/jasmine.css">
<script src="https://code.angularjs.org/1.4.9/angular.js"></script>
<script src="https://code.angularjs.org/1.4.9/angular-mocks.js"></script>
JavaScript
//--------------BL------------
(function() {
function MyDataService() {
this.getNames = function() {
return ['Alice', 'Bob'];
}
}
function MyController($scope, MyDataService) {
$scope.greetings = [];
$scope.init = function() {
var names = MyDataService.getNames();
for (var i = 0; i < names.length; i++) {
var greet = 'Hello ' + names[i];
$scope.greetings.push(greet);
}
}
}
//OtherModule
angular.module('OtherModule', [])
.service('MyDataService', MyDataService);
//MyModule
angular.module('MyModule', ['OtherModule'])
.controller('MyController', ['$scope', 'MyDataService', MyController]);
})();
//--------------specs------------
describe("MyController test suite", function() {
var myScope;
beforeEach(module('MyModule'));
beforeEach(inject(function($controller, $rootScope) {
myScope = $rootScope.$new();
$controller("MyController", {
$scope: myScope
});
}));
it("should have greetings array", function() {
expect(myScope.greetings).toBeDefined();
});
it("init() should update greetings array", function() {
myScope.init();
expect(myScope.greetings.length).toBeGreaterThan(0);
});
});