evelynhathaway / jest-location-mock

🗺🧪 Jest hooks for JSDOM location mock
https://npmjs.com/package/jest-location-mock
MIT License
58 stars 5 forks source link
jest jest-hooks jsdom location mock mocks url
Jest Location Mock icon # Jest Location Mock **Jest hooks for JSDOM location mock** [![npm version](https://badgen.net/npm/v/jest-location-mock?icon=npm)](https://www.npmjs.com/package/jest-location-mock) [![check status](https://badgen.net/github/checks/evelynhathaway/jest-location-mock/main?icon=github)](https://github.com/evelynhathaway/jest-location-mock/actions) [![license: MIT](https://badgen.net/badge/license/MIT/blue)](/LICENSE)

Description

Ever gotten the following error when using window.location.assign, reload, or replace?

Error: Not implemented: navigation (except hash changes)

This Jest plugin fixes this error and mocks out window.location so it behaves similar to how does in the browser.

Features

Installation

npm install --save-dev jest-location-mock

Usage

To start using Jest Location Mock, extend expect and add hooks by importing the default export in your jest setup file.

Setup

jest.config.js

module.exports = {
    setupFilesAfterEnv: [
        "./config/jest-setup.js"
    ]
};

config/jest-setup.js

// Mock `window.location` with Jest spies and extend expect
import "jest-location-mock";

Matchers

expect(location).toBeAt(url, [base])

Throws: When the URLs have a different absolute href.

Parameter Type Description
location Location | URL Instance of URL to check its href
url string | URL Relative or absolute URL
base string | URL If the url parameter is relative, an base URL for the URL constructor
it("should call assign with a relative url", () => {
    window.location.assign("/relative-url");
    expect(window.location).not.toBeAt("/");
    expect(window.location).toBeAt("/relative-url");
});

License

Copyright Evelyn Hathaway, MIT License