Maison > interface Web > js tutoriel > le corps du texte

Meilleures techniques pour créer des tests avec le framework Vitest

Linda Hamilton
Libérer: 2024-09-25 20:26:42
original
142 Les gens l'ont consulté

Best Techniques to Create Tests with the Vitest Framework

Ujian unit, ujian integrasi dan ujian hujung ke hujung semuanya disokong oleh Vitest, rangka kerja ujian pantas dan kontemporari yang direka untuk Vite. Dengan penyepaduan lancarnya dengan perpustakaan JavaScript kontemporari seperti React dan Vue, ia menyediakan cara ujian penulisan yang pantas dan berkesan yang tidak memerlukan persediaan. Kaedah terbaik untuk menulis ujian yang boleh dipercayai, terurus dan berkesan dengan rangka kerja Vitest akan dibincangkan dalam artikel ini.

1. Menyediakan Vitest

Sebelum mendalami teknik lanjutan, mari sediakan projek mudah dengan Vitest. Jika anda menggunakan Vite untuk projek anda, Vitest direka bentuk untuk berfungsi di luar kotak dengan persediaan yang minimum.

Langkah 1: Pasang Vitest

Untuk memasang Vitest, jalankan arahan berikut dalam direktori projek anda:

npm install vitest --save-dev
Copier après la connexion

Langkah 2: Buat Ujian Mudah

Setelah dipasang, buat fail ujian ringkas untuk melihat Vitest beraksi.

import { describe, it, expect } from 'vitest';

describe('Math Functions', () => {
  it('should add two numbers correctly', () => {
    const sum = 1 + 2;
    expect(sum).toBe(3);
  });
});
Copier après la connexion

Jalankan ujian anda menggunakan arahan berikut:

npx vitest
Copier après la connexion

2. Atur Ujian dengan Describe and It Block

Huraian dan bloknya adalah asas dalam Vitest (dan banyak rangka kerja ujian lain seperti Jest). Mereka membantu mengatur ujian anda secara logik dan menjadikannya lebih mudah dibaca.

huraikan: Digunakan untuk mengumpulkan ujian berkaitan.
ia: Mentakrifkan kes ujian individu dalam blok huraikan.
Struktur ini memastikan bahawa kes ujian anda teratur dan boleh diselenggara apabila suite ujian anda berkembang.

describe('User Authentication', () => {
  it('should login with valid credentials', () => {
    // Test login functionality
  });

  it('should fail to login with invalid credentials', () => {
    // Test invalid login functionality
  });
});
Copier après la connexion

3. Ketergantungan Mengejek

Dalam aplikasi moden, ujian selalunya memerlukan simulasi perkhidmatan luaran seperti API, pangkalan data atau perpustakaan pihak ketiga. Vitest menyediakan sokongan asli untuk kebergantungan mengejek, yang membantu mengasingkan tingkah laku yang ingin anda uji.

Mengejek Contoh Panggilan API

Mari kita mempermainkan panggilan API mudah menggunakan vi.fn Vitest untuk mensimulasikan fungsi tanpa benar-benar memanggil perkhidmatan luaran.

import { vi } from 'vitest';
import { fetchUserData } from './api';

vi.mock('./api', () => ({
  fetchUserData: vi.fn(),
}));

describe('User API', () => {
  it('should fetch user data correctly', async () => {
    const mockUserData = { id: 1, name: 'John Doe' };
    fetchUserData.mockResolvedValueOnce(mockUserData);

    const result = await fetchUserData(1);
    expect(result).toEqual(mockUserData);
  });
});
Copier après la connexion

Dalam contoh ini, kami mengejek fungsi fetchUserData, membolehkan kami mengawal respons dan mengelak daripada membuat panggilan API sebenar.

4. Ujian Syot Kilat

Vitest menyokong ujian syot kilat, yang berguna apabila anda ingin mengesahkan output komponen atau fungsi dari semasa ke semasa. Teknik ini amat berfaedah untuk komponen UI.

Contoh Ujian Syot Kilat

import { describe, it, expect } from 'vitest';
import { render } from '@testing-library/react';
import MyComponent from './MyComponent';

describe('MyComponent', () => {
  it('should match the snapshot', () => {
    const { container } = render(<MyComponent />);
    expect(container).toMatchSnapshot();
  });
});
Copier après la connexion

Ujian syot kilat memastikan output komponen kekal konsisten. Jika output berubah, anda akan digesa untuk mengemas kini syot kilat, membantu menangkap perubahan yang tidak disengajakan.

5. Menguji Kod Asynchronous

Apabila menguji fungsi tak segerak, Vitest menyediakan utiliti untuk mengendalikan janji, menjadikannya lebih mudah untuk memastikan kod tak segerak berfungsi seperti yang diharapkan.

Menguji Contoh Fungsi Async

import { describe, it, expect } from 'vitest';

const fetchData = async () => {
  return new Promise((resolve) => setTimeout(() => resolve('data'), 1000));
};

describe('Async Functions', () => {
  it('should resolve data', async () => {
    const data = await fetchData();
    expect(data).toBe('data');
  });
});
Copier après la connexion

Teknik ini penting untuk menguji permintaan API, pemasa atau kod tak segerak yang lain.

6. Liputan Kod

Vitest menyokong penjanaan laporan liputan kod di luar kotak, yang membantu anda memahami berapa banyak pangkalan kod anda diliputi oleh ujian. Ia menunjukkan bahagian kod yang telah diuji dan yang masih belum diuji.

Mendayakan Liputan Kod

Untuk mendayakan liputan kod, tambahkan yang berikut pada konfigurasi Vitest anda:

// vite.config.js or vitest.config.js
export default {
  test: {
    coverage: {
      reporter: ['text', 'html'],
    },
  },
};
Copier après la connexion

Jalankan ujian anda dengan liputan:

npx vitest --coverage
Copier après la connexion

Ini akan menjana laporan liputan, membolehkan anda menganalisis bahagian mana kod anda memerlukan lebih banyak ujian.

7. Ujian Parameter

Ujian berparameter ialah cara terbaik untuk menjalankan satu kes ujian dengan input dan output yang dijangkakan berbeza. Ini mengurangkan pertindihan kod dan memastikan fungsi anda berfungsi dengan betul untuk pelbagai senario.

Contoh Ujian Parameter

describe.each([
  [1, 2, 3],
  [2, 3, 5],
  [5, 5, 10],
])('Math Operations', (a, b, expected) => {
  it(`should add ${a} and ${b} to equal ${expected}`, () => {
    expect(a + b).toBe(expected);
  });
});
Copier après la connexion

Dengan menggunakan describe.each, anda boleh mengulang set input dan output yang dijangkakan dalam satu kes ujian, menjadikan ujian anda lebih KERING (Jangan Ulangi Sendiri).

8. Menguji Komponen Reaksi dengan Perpustakaan Pengujian

Vitest berfungsi dengan baik dengan Pustaka Pengujian React, alat popular untuk menguji komponen React. Ia menggalakkan ujian kelakuan komponen anda, bukannya butiran pelaksanaan.

Contoh Pengujian Komponen Reaksi

import { render, screen } from '@testing-library/react';
import { describe, it, expect } from 'vitest';
import MyButton from './MyButton';

describe('MyButton Component', () => {
  it('should render correctly', () => {
    render(<MyButton />);
    expect(screen.getByText('Click Me')).toBeInTheDocument();
  });

  it('should call onClick when clicked', () => {
    const handleClick = vi.fn();
    render(<MyButton onClick={handleClick} />);
    screen.getByText('Click Me').click();
    expect(handleClick).toHaveBeenCalledTimes(1);
  });
});
Copier après la connexion

Menguji komponen React dengan Vitest memastikan UI anda berkelakuan seperti yang diharapkan apabila berinteraksi dengan butang, input atau elemen lain.

Kesimpulan

Sans aucune configuration requise, le framework Vitest offre une expérience de test robuste et contemporaine. Vous pouvez créer des suites de tests fiables et efficaces en adhérant aux meilleures pratiques, notamment l'utilisation de blocs de description pour organiser les tests, la simulation de services externes et l'utilisation de tests instantanés. De plus, des méthodes telles que l'activation de la couverture de code, le test des composants React et le test du code asynchrone garantiront que votre application est bien testée et maintenable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!