0Pricing
TypeScript Academy · レッスン

TypeScriptでのModuleとFunctionのモック

適切な型キャスト戦略でjest.mockを使います。

「TypeScriptでのModuleとFunctionのモック」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。

ようこそ

TypeScriptでJestのモジュールをモックするには、any型のモックを避けるために適切な型キャスト戦略が必要です。

型を使ったjest.fn()

シグネチャを使ってjestのモック関数に型を付けます。
const mockFn = jest.fn<number, [string]>();
mockFn('hello'); // typed call

jest.mock()とTypeScript

jest.mockはデフォルトでは型付けされていません。型付きでアクセスするには、jest.MockedFunctionにキャストします。
jest.mock('./api');
import { fetchUser } from './api';
const mockFetch = fetchUser as jest.MockedFunction<typeof fetchUser>;

jest.mocked()ヘルパー

Jest 27以降では、モックしたモジュールに明確に型を付けるためのjest.mocked()が提供されています。
jest.mock('./api');
import { fetchUser } from './api';
const mockFetch = jest.mocked(fetchUser);
mockFetch.mockResolvedValue({ id: 1, name: 'Alice' });

戻り値のモック

mockReturnValueとmockResolvedValueに正しく型を付けます。
mockFetch.mockResolvedValue({ id: 1, name: 'Alice' }); // must match User type

メソッドのスパイ

型付きでメソッドをスパイするにはjest.spyOnを使用します。
const spy = jest.spyOn(userService, 'findUser');
spy.mockResolvedValue(mockUser);

モジュール全体のモック

手動のファクトリ関数を使って、モジュール全体をモックします。
jest.mock('./db', () => ({
  findUser: jest.fn(),
  createUser: jest.fn(),
}));

自動モック

jest.createMockFromModuleは、既存のモジュールからモックを作成します。
const mockDb = jest.createMockFromModule<typeof import('./db')>('./db');

部分的なモック

モジュールの一部のメソッドだけをモックします。
jest.mock('./email', () => ({ ...jest.requireActual('./email'), sendEmail: jest.fn() }));

モックのクリア

状態の漏洩を防ぐため、テスト間でモックをリセットします。
afterEach(() => { jest.clearAllMocks(); });
// Or globally: jest.config clearMocks: true

型安全なモックオブジェクト

依存性注入のテスト用に、型付きのモックオブジェクトを作成します。
const mockRepo: jest.Mocked<UserRepository> = {
  findById: jest.fn(),
  save: jest.fn(),
  delete: jest.fn(),
};

クイックチェック

TypeScriptで`jest.mocked(fn)`は何を行いますか。

まとめ

TypeScriptでのモジュールと関数のモック:主要な概念とパターンを習得しました。

よくある質問

「TypeScriptでのModuleとFunctionのモック」レッスンは無料ですか?

はい。「TypeScriptでのModuleとFunctionのモック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「TypeScriptでのModuleとFunctionのモック」で何を学びますか?

適切な型キャスト戦略でjest.mockを使います。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「TypeScriptでのModuleとFunctionのモック」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ts-jestによるTypeScript用Jestセットアップ
  2. 型安全なユニットテストの記述
  3. TypeScriptでのModuleとFunctionのモック
  4. expectTypeOfとtsdによる型テスト
← TypeScript Academyに戻る