0Pricing
TypeScript Academy · บทเรียน

การจำลองโมดูลและฟังก์ชันใน TypeScript

ใช้ jest.mock ด้วยกลยุทธ์การแปลงชนิดที่ถูกต้อง

การจำลองโมดูลและฟังก์ชันใน TypeScript เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

การจำลองมอดูลของ Jest ด้วย TypeScript จำเป็นต้องใช้กลยุทธ์การแปลงชนิดข้อมูลที่ถูกต้อง เพื่อหลีกเลี่ยงม็อกที่มีชนิดข้อมูลเป็น 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 สร้าง mock จากมอดูลที่มีอยู่
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

ออบเจ็กต์ mock ที่ปลอดภัยด้านชนิดข้อมูล

สร้างออบเจ็กต์ mock ที่ระบุชนิดข้อมูลสำหรับการทดสอบการฉีดการพึ่งพา
const mockRepo: jest.Mocked<UserRepository> = {
  findById: jest.fn(),
  save: jest.fn(),
  delete: jest.fn(),
};

ตรวจสอบอย่างรวดเร็ว

`jest.mocked(fn)` ทำอะไรใน TypeScript

สรุป

การจำลองมอดูลและฟังก์ชันใน TypeScript: คุณได้เข้าใจแนวคิดและรูปแบบสำคัญแล้ว

คำถามที่พบบ่อย

บทเรียน “การจำลองโมดูลและฟังก์ชันใน TypeScript” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจำลองโมดูลและฟังก์ชันใน TypeScript” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจำลองโมดูลและฟังก์ชันใน TypeScript”

ใช้ jest.mock ด้วยกลยุทธ์การแปลงชนิดที่ถูกต้อง คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การจำลองโมดูลและฟังก์ชันใน TypeScript” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม

ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตั้งค่า Jest สำหรับ TypeScript ด้วย ts-jest
  2. การเขียนการทดสอบหน่วยที่ปลอดภัยด้านชนิด
  3. การจำลองโมดูลและฟังก์ชันใน TypeScript
  4. การทดสอบชนิดด้วย expectTypeOf และ tsd
← กลับไปที่ TypeScript Academy