Saturday, May 11, 2024
11
rated 0 times [  17] [ 6]  / answers: 1 / hits: 35413  / 13 Years ago, thu, june 23, 2011, 12:00:00

document.cookie is like a string, but it is not a string. To quote the example from the Mozilla doc:



document.cookie = name=oeschger;
document.cookie = favorite_food=tripe;
alert(document.cookie);
// displays: name=oeschger;favorite_food=tripe


If you tried to make a mock cookie using only a string, you would not get the same results:



var mockCookie = ;
mockCookie = name=oeschger;
mockCookie = favorite_food=tripe;
alert(mockCookie);
// displays: favorite_food=tripe


So, if you wanted to unit test a module that operates on the cookie, and if you wanted to use a mock cookie for those tests, could you? How?


More From » unit-testing

 Answers
3

You could create an object with a cookie setter and getter. Here is a very simple implementation:



var mock = {
value_: '',

get cookie() {
return this.value_;
},

set cookie(value) {
this.value_ += value + ';';
}
};


Might not work in all browsers though (especially IE). Update: It only works in browsers supporting ECMAScript 5!



More about getter and setters.



mock.cookie = name=oeschger;
mock.cookie = favorite_food=tripe;
alert(mock.cookie);
// displays: name=oeschger;favorite_food=tripe;


DEMO


[#91540] Wednesday, June 22, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jazmyne

Total Points: 503
Total Questions: 102
Total Answers: 99

Location: Svalbard and Jan Mayen
Member since Sun, Sep 25, 2022
2 Years ago
jazmyne questions
;