vitest-location-mock
TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published
Vitest Location Mock icon

Vitest Location Mock

(Fork of jest-location-mock, but for vitest)

Vitest hooks for JSDOM location mock

npm version check status license: MIT

Description

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

Error: Not implemented: navigation (except hash changes)

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

Features

  • Mock and control window.location
  • Relative URL support
  • TypeScript extend expect support

Installation

npm install --save-dev vitest-location-mock

Usage

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

Setup

vite.config.js

export default defineConfig({
    setupFiles: [
        "./config/vitest-setup.js"
    ]
});

config/vitest-setup.js

// Mock `window.location` with Vitest spies and extend expect
import "vitest-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

Readme

Keywords

Package Sidebar

Install

npm i vitest-location-mock

Weekly Downloads

67

Version

1.0.4

License

MIT

Unpacked Size

9.61 kB

Total Files

26

Last publish

Collaborators

  • bradreed