@tauri-apps/api/mocks
Test helpers that stand in for the Tauri backend.
Importing any other module of this package in a plain Node/browser test
environment fails, because there is no window.__TAURI_INTERNALS__ to talk to.
The functions here install a fake one: mockIPC intercepts invoke
calls, mockWindows makes the window/webview APIs believe a set of
windows exists, and mockConvertFileSrc makes convertFileSrc return
the URL shape of a given platform.
Call clearMocks after each test when your runner reuses the same
window object between tests.
Example
Section titled “Example”import { beforeEach, afterEach, expect, test } from 'vitest';import { mockIPC, clearMocks } from '@tauri-apps/api/mocks';import { invoke } from '@tauri-apps/api/core';
afterEach(() => { clearMocks();});
test('greet', async () => { mockIPC((cmd, args) => { if (cmd === 'greet') { return `Hello, ${(args as { name: string }).name}!`; } });
await expect(invoke('greet', { name: 'tauri' })).resolves.toBe('Hello, tauri!');});This package is also accessible with window.__TAURI__.mocks when app.withGlobalTauri in tauri.conf.json is set to true.
Functions
Section titled “Functions”clearMocks()
Section titled “clearMocks()”function clearMocks(): void;Defined in: packages/api/src/mocks.ts:355
Clears mocked functions/data injected by the other functions in this module. When using a test runner that doesn’t provide a fresh window object for each test, calling this function will reset tauri specific properties.
Example
import { mockWindows, clearMocks } from "@tauri-apps/api/mocks"
afterEach(() => { clearMocks()})
test("mocked windows", () => { mockWindows("main", "second", "third");
expect(window.__TAURI_INTERNALS__).toHaveProperty("metadata")})
test("no mocked windows", () => { expect(window.__TAURI_INTERNALS__).not.toHaveProperty("metadata")})Returns
Section titled “Returns”void
1.0.0
mockConvertFileSrc()
Section titled “mockConvertFileSrc()”function mockConvertFileSrc(osName: string): void;Defined in: packages/api/src/mocks.ts:316
Mock convertFileSrc function
Example
Section titled “Example”import { mockConvertFileSrc } from "@tauri-apps/api/mocks";import { convertFileSrc } from "@tauri-apps/api/core";
mockConvertFileSrc("windows")
const url = convertFileSrc("C:\\Users\\user\\file.txt")Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
osName |
string |
The operating system to mock, can be one of linux, macos, or windows |
Returns
Section titled “Returns”void
1.6.0
mockIPC()
Section titled “mockIPC()”function mockIPC(cb: (cmd: string, payload?: InvokeArgs) => unknown, options?: MockIPCOptions): void;Defined in: packages/api/src/mocks.ts:143
Intercepts all IPC requests with the given mock handler.
This function can be used when testing tauri frontend applications or when running the frontend in a Node.js context during static site generation.
Examples
Testing setup using Vitest:
import { mockIPC, clearMocks } from "@tauri-apps/api/mocks"import { invoke } from "@tauri-apps/api/core"
afterEach(() => { clearMocks()})
test("mocked command", () => { mockIPC((cmd, payload) => { switch (cmd) { case "add": return (payload.a as number) + (payload.b as number); default: break; } });
expect(invoke('add', { a: 12, b: 15 })).resolves.toBe(27);})The callback function can also return a Promise:
import { mockIPC, clearMocks } from "@tauri-apps/api/mocks"import { invoke } from "@tauri-apps/api/core"
afterEach(() => { clearMocks()})
test("mocked command", () => { mockIPC((cmd, payload) => { if(cmd === "get_data") { return fetch("https://example.com/data.json") .then((response) => response.json()) } });
expect(invoke('get_data')).resolves.toBe({ foo: 'bar' });})listen can also be mocked with direct calls to the emit function. This functionality is opt-in via the shouldMockEvents option:
import { mockIPC, clearMocks } from "@tauri-apps/api/mocks"import { emit, listen } from "@tauri-apps/api/event"
afterEach(() => { clearMocks()})
test("mocked event", () => { mockIPC(() => {}, { shouldMockEvents: true }); // enable event mocking
const eventHandler = vi.fn(); listen('test-event', eventHandler); // typically in component setup or similar
emit('test-event', { foo: 'bar' }); expect(eventHandler).toHaveBeenCalledWith({ event: 'test-event', payload: { foo: 'bar' } });})emitTo is currently not supported by this mock implementation.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
cb |
(cmd: string, payload?: InvokeArgs) => unknown |
options? |
MockIPCOptions |
Returns
Section titled “Returns”void
1.0.0
mockWindows()
Section titled “mockWindows()”function mockWindows(current: string, ..._additionalWindows: string[]): void;Defined in: packages/api/src/mocks.ts:287
Mocks one or many window labels.
In non-tauri context it is required to call this function before using the @tauri-apps/api/window module.
This function only mocks the presence of windows,
window properties (e.g. width and height) can be mocked like regular IPC calls using the mockIPC function.
Examples
import { mockWindows } from "@tauri-apps/api/mocks";import { getCurrentWindow } from "@tauri-apps/api/window";
mockWindows("main", "second", "third");
const win = getCurrentWindow();
win.label // "main"import { mockWindows } from "@tauri-apps/api/mocks";
mockWindows("main", "second", "third");
mockIPC((cmd, args) => { if (cmd === "plugin:event|emit") { console.log('emit event', args?.event, args?.payload); }});
const { emit } = await import("@tauri-apps/api/event");await emit('loaded'); // this will cause the mocked IPC handler to log to the console.Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
current |
string |
Label of window this JavaScript context is running in. |
…_additionalWindows |
string[] |
- |
Returns
Section titled “Returns”void
1.0.0
Interfaces
Section titled “Interfaces”MockIPCOptions
Section titled “MockIPCOptions”Defined in: packages/api/src/mocks.ts:62
Options for mockIPC.
Options
shouldMockEvents: If true, the listen and emit functions will be mocked, allowing you to test event handling without a real backend.
This will consume any events emitted with the plugin:event prefix.
2.7.0
Properties
Section titled “Properties”| Property | Type | Defined in |
|---|---|---|
shouldMockEvents? |
boolean |
packages/api/src/mocks.ts:63 |
© 2026 Tauri Contributors. CC-BY / MIT