Comment se moquer de angularjs $de la fenêtre.sessionStorage avec le Jasmin et le Karma
Je suis nouvelle marque de Jasmin et d'essayer de comprendre comment, à se moquer de l' $de la fenêtre.sessionStorage objet lors de l'essai d'un angularjs SPA à l'aide de Jasmin.
(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');
}
}
})();
Un simple test, je suis en train de faire est de simplement écraser le sessionStorage et injecter mon stub pour mon test.
'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');
});
});
});
OriginalL'auteur veilig | 2014-04-30
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement créer un objet normal d'obtenir ce dont vous avez besoin, comme ceci:
Avez-vous le
var $window
ci-dessusbeforeEach
comme dans la question?OriginalL'auteur Ye Liu