Spec-Zone.ru › Deno 2

Переход с Jest

Большинство наборов тестов Jest можно перенести на deno test без переписывания логики тестов: модуль node:test предоставляет ту же структуру describe/it, а стандартная библиотека включает expect с уже используемыми вами сопоставителями. Меняется лишь несколько импортов и способ настройки запуска тестов.

Тот же тест в Deno

Для типичного теста Jest достаточно добавить новые импорты:

cart.test.ts
import { beforeEach, describe, it } from "node:test";
import { expect, fn } from "jsr:@std/expect";

describe("shopping cart", () => {
  let cart: string[];

  beforeEach(() => {
    cart = [];
  });

  it("starts empty", () => {
    expect(cart).toHaveLength(0);
  });

  it("notifies a listener", () => {
    const onAdd = fn();
    cart.push("apple");
    onAdd(cart.length);
    expect(onAdd).toHaveBeenCalledWith(1);
  });
});
›_
$ deno test cart.test.ts
ok | 1 passed (2 steps) | 0 failed (13ms)

В отличие от Jest, ничего не внедряется в глобальную область видимости: describe, it, expect и хуки импортируются явно, поэтому в каждом файле указано, что именно он использует. Тесты, написанные для node:test, также продолжают работать в самой среде Node.js.

Что чему соответствует

Jest Deno
describe, it, beforeEach, … node:test (или @std/testing/bdd)
сопоставители expect(...) jsr:@std/expect
jest.fn() fn() из jsr:@std/expect
jest.spyOn(obj, "m") spy/stub из @std/testing/mock
toMatchSnapshot() assertSnapshot
jest.useFakeTimers() FakeTime
npx jest deno test
npx jest --watch deno test --watch
npx jest -t "name" deno test --filter "name"

Перенос настроек

Большая часть конфигурации Jest больше не нужна: TypeScript, JSX и ES-модули работают без преобразований, поэтому у параметров ts-jest, babel-jest и transform нет соответствующих настроек для переноса. Выбор файлов задаётся в deno.json:

deno.json
{
  "test": {
    "include": ["src/**/*.test.ts"],
    "exclude": ["src/fixtures/"]
  }
}

Моки модулей

В Deno нет аналога jest.mock("./module"), поскольку записи модулей неизменяемы. Тесты, использующие эту функцию, можно перенести одним из следующих способов:

  • внедрение зависимостей: передайте зависимый объект и предоставьте тесту шпион или заглушку,
  • подмена объекта, предоставляемого модулем, с помощью stub из @std/testing/mock.

Обычно это единственная часть миграции, для которой требуется изменить тестируемый код.

Оставьте пакеты npm там, где это удобно

Вспомогательные инструменты для тестирования из npm продолжают работать через спецификаторы npm:, например npm:@testing-library/dom для проверок DOM (см. раздел Использование Testing Library с Deno). Перенести нужно только сам запуск тестов.

Флаги запуска, репортёры и покрытие кода описаны в справочнике по deno test.

Последнее обновление: 12 июня 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/test/migrate_from_jest

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API