SO question
Jasmine + Angular
HTML
<script src="http://jasmine.github.io/2.0/lib/jasmine.js"></script>
<script src="http://jasmine.github.io/2.0/lib/jasmine-html.js"></script>
<script src="http://jasmine.github.io/2.0/lib/boot.js"></script>
<link rel="stylesheet" href="http://jasmine.github.io/2.0/lib/jasmine.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular-mocks.js"></script>
JavaScript
// Source
angular.module("jbLocalStorage", [])
.service("localStorageService", ["$window", function($window){
this.has = function(key){
console.log($window); //added to see what $window is referencing in unit test
if ($window.localStorage.getItem(key) !== null){
return true;
} else {
return false;
}
};
}]);
// Test
describe("Has function", function(){
var localStorageService;
beforeEach(module('jbLocalStorage', function($provide){
$provide.value('$window', {
localStorage : {
getItem : function(key){
if (key === "shape") {return "triangle";} else {return null;}
},
},
});
}));
beforeEach(inject(function(_localStorageService_){
localStorageService = _localStorageService_;
}));
it("should return true if key is found in local storage", function(){
expect(localStorageService.has("shape")).toEqual(true);
expect(localStorageService.has("wat?")).toBeFalsy();
});
});