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',};