Я новичок в Jasmine и пытаюсь понять, как издеваться над объектом $window.sessionStorage при тестировании SPA angularjs с использованием Jasmine.
(function() {
'use strict';
var serviceId = 'session';
// Define the service on the module.
// Inject the dependencies.
// Point to the service definition function.
angular.module('app').service(serviceId, ['$window', session]);
function session($window) {
var token = null;
var service = {
create: create,
destroy: destroy,
getToken: getToken,
read: read
};
return service;
...
/**
* Get the session token
*/
function getToken() {
return this.token;
}
/**
* Read session variables from local session storage
*/
function read() {
this.token = $window.sessionStorage.getItem('token');
}
}
})();
Простой тест, который я пытаюсь сделать, это просто заглушить sessionStorage и ввести мою заглушку для моего теста.
'use strict';
describe("session", function() {
var session;
var $window;
beforeEach(module("app"));
/*
beforeEach(function() {
$window = {sessionStorage: {replace: jasmine.createSpy()}};
module(function($provide) {
$provide.value('$window', $window);
});
});
*/
beforeEach(inject(function (_session_) {
session = _session_;
}));
describe("read", function() {
it("should read session data from the window", function() {
$window.sessionStorage.token = 'token';
session.read();
expect(session.getToken()).toBe('token');
});
});
});