Question: `document.cookie` is like a string, but it is not a string. To quote the example from the [Mozilla doc](https://developer.mozilla.org/En/Document.cookie):

```
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?**

Answer: 
I figured out that jasmine has `spyOnProperty` which can be used for when you want to spy on getter and setters of objects. So I solved my issue with this:

```
const cookie: string = 'my-cookie=cookievalue;';    
spyOnProperty(document, 'cookie', 'get').and.returnValue(cookie);

```
Here is how I ended up doing it in Jest:

My cookie wasn't added anymore to `document.cookie` after adding the `Secure` attribute (because `document.location` is the insecure `http://localhost`).

So after lots of trials and errors *(trying to intercept `document.cookie`'s setter and dropping its `;Secure` from it, but then calling again `document.cookie =`  with the new value triggered an infinite loop as it entered again the setter...)*, I ended up with this quite simple solution:

```js
beforeEach(function() {
  let cookieJar = document.cookie;
  jest.spyOn(document, 'cookie', 'set').mockImplementation(cookie => {
    cookieJar += cookie;
  });
  jest.spyOn(document, 'cookie', 'get').mockImplementation(() => cookieJar);
})

```