How to mock window.location.href with Jest + Vuejs? How to mock window.location.href with Jest + Vuejs? vue.js vue.js

How to mock window.location.href with Jest + Vuejs?


You can try:

global.window = Object.create(window);const url = "http://dummy.com";Object.defineProperty(window, 'location', {  value: {    href: url  }});expect(window.location.href).toEqual(url);  

Have a look at the Jest Issue for that problem:
Jest Issue


2020 Update


Basic

The URL object has a lot of the same functionality as the Location object. In other words, it includes properties such as pathname, search, hostname, etc. So for most cases, you can do the following:

delete window.locationwindow.location = new URL('https://www.example.com')

Advanced

You can also mock Location methods that you might need, which don't exist on the URL interface:

const location = new URL('https://www.example.com')location.assign = jest.fn()location.replace = jest.fn()location.reload = jest.fn()delete window.locationwindow.location = location


Solution for 2019 from GitHub:

delete global.window.location;global.window = Object.create(window);global.window.location = {  port: '123',  protocol: 'http:',  hostname: 'localhost',};