Pengujian Integrasi Halaman
Jalankan ujian integrasi untuk halaman Next.js dan laluan API bagi memastikan bahagian berlainan aplikasi anda berfungsi bersama.
Pengujian Integrasi Halaman ialah pelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan), dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) merangkumi sejumlah 4 pelajaran.
Pengenalan kepada Ujian Integrasi
Selamat datang! Dalam pelajaran ini, kita akan meneroka pengujian integrasi untuk aplikasi Next.js anda.
Ujian integrasi mengesahkan bahawa bahagian berlainan dalam aplikasi anda berfungsi dengan betul bersama-sama. Daripada unit yang diasingkan, kita menyemak aliran antara komponen, halaman dan laluan API.
Mengapakah Halaman & Laluan Perlu Diuji?
Bagi Next.js, pengujian integrasi amat penting kerana memastikan perkara berikut:
- Halaman dipaparkan dengan betul bersama datanya.
- Interaksi pengguna (seperti penghantaran borang) mencetuskan logik bahagian belakang yang betul.
- Laluan API memberikan respons seperti yang dijangka apabila dipanggil daripada bahagian hadapan atau perkhidmatan lain.
Pengujian ini membantu mengesan masalah yang mungkin terlepas daripada ujian unit apabila komponen berinteraksi.
Alat: Jest, RTL, next/test-utils
Kita akan menggunakan alat berikut terutamanya untuk pengujian integrasi:
- Jest: Rangka kerja pengujian JavaScript yang popular.
- React Testing Library (RTL): Untuk memaparkan komponen React (seperti halaman Next.js anda) dan mensimulasikan interaksi pengguna.
@next/test-utils: Menyediakan pembantu khusus untuk menguji ciri Next.js, seperti laluan API.
Menguji Komponen Halaman
Untuk menguji komponen halaman Next.js, kita boleh memaparkannya menggunakan React Testing Library. Ini membolehkan kita membuat penegasan bahawa kandungan yang betul dipaparkan dan berinteraksi dengan elemen pada halaman.
Biasanya, anda akan mengimport komponen halaman secara terus dan memaparkannya dalam fail ujian anda.
Kod: Ujian Halaman Ringkas
Berikut ialah cara anda boleh menguji halaman About yang ringkas untuk memastikan tajuknya dipaparkan.
// pages/about.js
export default function About() {
return (
<div>
<h1>About Us</h1>
<p>This is the about page.</p>
</div>
);
}
// __tests__/about.test.js
import { render, screen } from '@testing-library/react';
import About from '../pages/about';
describe('About Page', () => {
it('renders the about page heading', () => {
render(<About />);
const heading = screen.getByRole('heading', { name: /About Us/i });
expect(heading).toBeInTheDocument();
});
});Interaksi Pengguna dalam Ujian
Ujian integrasi selalunya melibatkan simulasi tingkah laku pengguna. React Testing Library menyediakan utiliti seperti fireEvent (atau userEvent untuk interaksi yang lebih realistik) bagi mengklik butang, menaip dalam medan input dan banyak lagi.
Dengan ini, anda boleh mengesahkan bahawa halaman anda bertindak balas dengan betul terhadap input pengguna, sama seperti pengguna sebenar.
// components/Counter.js
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
// __tests__/counter.test.js
import { render, screen, fireEvent } from '@testing-library/react';
import Counter from '../components/Counter';
describe('Counter Component', () => {
it('increments count on button click', () => {
render(<Counter />);
const button = screen.getByRole('button', { name: /Increment/i });
fireEvent.click(button);
expect(screen.getByText(/Count: 1/i)).toBeInTheDocument();
});
});Menguji Laluan API Next.js
Laluan API Next.js ialah fungsi pada bahagian pelayan. Anda boleh mengujinya dengan mengimport fungsi pengendalinya dan menggunakan createNextApiHandler daripada @next/test-utils untuk mensimulasikan permintaan.
Ini membolehkan anda menghantar permintaan tiruan dan membuat penegasan terhadap kod status serta respons JSON.
// pages/api/hello.js
export default function handler(req, res) {
res.status(200).json({ name: 'John Doe' });
}
// __tests__/api/hello.test.js
import { createNextApiHandler } from '@next/test-utils';
import handler from '../../pages/api/hello';
describe('/api/hello', () => {
it('returns a name', async () => {
const testHandler = createNextApiHandler(handler);
const res = await testHandler({ method: 'GET' });
expect(res.statusCode).toBe(200);
expect(await res.json()).toEqual({ name: 'John Doe' });
});
});Meniru Panggilan Luaran dalam API
Laluan API sering berinteraksi dengan pangkalan data atau perkhidmatan luaran lain. Dalam ujian integrasi, anda harus meniru kebergantungan luaran ini bagi memastikan ujian anda pantas dan konsisten.
Keupayaan peniruan Jest amat sesuai untuk perkara ini kerana membolehkan anda mengawal nilai pulangan panggilan luaran tersebut.
// lib/db.js (simplified)
export const getUser = async (id) => ({ id, name: 'Mock User' });
// pages/api/user/[id].js
import { getUser } from '../../../lib/db';
export default async function handler(req, res) {
const { id } = req.query;
const user = await getUser(id);
res.status(200).json(user);
}
// __tests__/api/user.test.js
import { createNextApiHandler } from '@next/test-utils';
import handler from '../../pages/api/user/[id]';
import * as db from '../../lib/db';
describe('/api/user/[id]', () => {
it('returns a user with mocked DB', async () => {
jest.spyOn(db, 'getUser').mockResolvedValue({ id: '1', name: 'Test User' });
const testHandler = createNextApiHandler(handler);
const res = await testHandler({ method: 'GET', query: { id: '1' } });
expect(res.statusCode).toBe(200);
expect(await res.json()).toEqual({ id: '1', name: 'Test User' });
jest.restoreAllMocks();
});
});Integrasi Halaman & Tindakan Pelayan
Menguji halaman yang menggunakan Tindakan Pelayan melibatkan pemaparan halaman, simulasi penghantaran borang dan membuat penegasan bahawa Tindakan Pelayan dipanggil dengan data yang betul.
Anda boleh meniru fungsi Tindakan Pelayan itu sendiri untuk mengawal nilai pulangannya dan mengesahkan bahawa fungsi tersebut telah dipanggil.
// app/actions.js
'use server';
export async function submitForm(formData) {
const name = formData.get('name');
return { success: true, message: `Hello, ${name}!` };
}
// app/page.js
import { submitForm } from './actions';
export default function Page() {
return (
<form action={submitForm}>
<input type="text" name="name" defaultValue="Guest" />
<button type="submit">Say Hello</button>
</form>
);
}
// __tests__/page.test.js
import { render, screen, fireEvent } from '@testing-library/react';
import Page from '../app/page';
import * as actions from '../app/actions';
describe('Home Page with Server Action', () => {
it('submits form and calls server action', async () => {
const mockSubmitForm = jest.spyOn(actions, 'submitForm')
.mockResolvedValue({ success: true, message: 'Hello, Test User!' });
render(<Page />);
const input = screen.getByRole('textbox', { name: /name/i });
fireEvent.change(input, { target: { value: 'Test User' } });
const button = screen.getByRole('button', { name: /Say Hello/i });
fireEvent.click(button);
expect(mockSubmitForm).toHaveBeenCalledWith(
expect.any(FormData)
);
mockSubmitForm.mockRestore();
});
});Uji Pengetahuan Anda
Masa untuk semakan pantas tentang pengujian integrasi!
Imbas Kembali: Membina Aplikasi Kukuh
Syabas! Anda telah mempelajari asas pengujian integrasi dalam Next.js.
- Kita telah membincangkan cara menguji halaman dan laluan API.
- Anda telah melihat cara mensimulasikan interaksi pengguna dan meniru kebergantungan luaran.
- Alat seperti Jest, React Testing Library dan
@next/test-utilsamat penting.
Dengan menulis ujian integrasi, anda membina aplikasi yang lebih kukuh dan mengesan pepijat lebih awal dalam proses pembangunan!
Pelajari TypeScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 22
- Pelajaran
- 88
Soalan Lazim
Adakah pelajaran “Pengujian Integrasi Halaman” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan), termasuk “Pengujian Integrasi Halaman”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengujian Integrasi Halaman”?
Jalankan ujian integrasi untuk halaman Next.js dan laluan API bagi memastikan bahagian berlainan aplikasi anda berfungsi bersama. Anda berlatih Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan)?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Pengujian Integrasi Halaman” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) ini?
Ya. Setiap pelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pengujian Unit Komponen
- Pengujian Integrasi Halaman
- Ujian E2E dengan Playwright/Cypress
- Menyamar dan Menguji Laluan API