Angular unit tests exercise solution
Angular unit tests exercise solution
by Yang Tyler
HTML
<script src="http://jasmine.github.io/1.3/lib/jasmine.js"></script>
<script src="http://jasmine.github.io/1.3/lib/jasmine-html.js"></script>
<link rel="stylesheet" href="http://jasmine.github.io/1.3/lib/jasmine.css">
<script src="http://code.angularjs.org/1.2.9/angular.js"></script>
<script src="http://code.angularjs.org/1.2.9/angular-mocks.js"></script>
JavaScript
var myApp = angular.module('myApp', []);
myApp.service('mySrv', [function () {
this.testFunc = function() {
return "do something";
}
}]);
myApp.controller('myCtrl', ['$scope', 'mySrv', function ($scope, mySrv) {
$scope.result = mySrv.testFunc();
}]);
// ---SPECS-------------------------
describe('myCtrl', function () {
var myCtrl, scope;
beforeEach(function () {
//This will work
/*
module('myApp');
module(function($provide) {
$provide.service("mySrv", function() {
this.testFunc = function() {
return "do some test stuff";
};
});
});
*/
module('myApp', function($provide) {
$provide.service("mySrv", function() {
this.testFunc = function(){
return "do some test stuff";
};
});
});
});
beforeEach(inject(function ($rootScope, $controller) {
rootScope = $rootScope;
scope = $rootScope.$new();
myCtrl = $controller('myCtrl', {
$scope: scope
});
}));
it("should return 'do some test stuff' if this will work'", function() {
expect(scope.result).toBe("do some test stuff");
});
});
// --- Runner -------------------------
(function () {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function (spec) {
return htmlReporter.specFilter(spec);
};
var currentWindowOnload = window.onload;
window.onload = function () {
if (currentWindowOnload) {
currentWindowOnload();
}
execJasmine();
};
function execJasmine() {
jasmineEnv.execute();
}
})();