国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vitest 單元測試方案

這篇具有很好參考價值的文章主要介紹了Vitest 單元測試方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??? 交流討論:歡迎加入我們一起學習!

?? 資源分享耗時200+小時精選的「軟件測試」資料包

???教程推薦:火遍全網的《軟件測試》教程??

??歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正!

簡介

  Vitest 是一個面向 Vite 的極快的單元測試框架。它利用了 Vite 的優(yōu)勢,提供了一種全新的測試體驗。本文將介紹如何在項目中集成和使用 Vitest 進行單元測試。

  安裝 Vitest

  npm install -D vitest

  配置 Vitest

  在項目根目錄下創(chuàng)建 vitest.config.js 文件,用于配置 Vitest。

  更多詳細配置 cn.vitest.dev/config/

  test: {

  ? ? globals: true,

  ? ? environment: 'happy-dom',

  ? ? restoreMocks: true,

  ? ? include: ['**/*.{test,spec,type-test}.{js,mjs,cjs,ts,tsx,jsx}'],

  ? ? coverage: {

  ? ? ? exclude: ['tests/**', '.eslintrc.cjs'],

  ? ? ? reporter: ['cobertura', 'text', 'html', 'clover', 'json'],

  ? ? },

  ? ? setupFiles: `${path.resolve(__dirname, 'tests/setup.ts')}`,

  ? ? snapshotFormat: {

  ? ? ? printBasicPrototype: true,

  ? ? },

  ? ? alias: []

  ? },

  配置 Vitest公共文件

  在項目根目錄下創(chuàng)建setup-test.ts文件,用于統(tǒng)一處理定時器,原生事件,以及在vitest環(huán)境下無法模擬的事件

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

  import '@testing-library/jest-dom/vitest';

  import MockAdapter from 'axios-mock-adapter';

  import axios from 'axios';

  import { configure } from '.';

  export const mock = new MockAdapter(axios);

  configure({

  ? renderMode: 'global',

  ? enableMultipleSelection: false,

  });

  beforeEach(() => {

  ? mock.reset();

  ? console.error = vi.fn();

  ? console.warn = vi.fn();

  ? vi.useFakeTimers();

  ? window.requestIdleCallback = vi.fn();

  ? document.execCommand = vi.fn();

  ? window.onresize = vi.fn();

  ? vi.setSystemTime(new Date(1680278400000));

  });

  afterEach(() => {

  ? mock.reset();

  ? vi.useRealTimers();

  });

  window.vi = vi;

  window.describe = describe;

  window.it = it;

  window.expect = expect;

  ·全局暴露 vi describe it expect 方法,如果以后更換測試框架,單元測試內部代碼無需改動

  ·?全局暴露mock,并在beforeEach 與 afterEach 清空相關的mock接口

  ·?初始化單元測試環(huán)境內時間

  單元測試分類

  ·?單元測試:主要是對項目里的最小 組件 或模塊進行測試,一般是在非瀏覽器環(huán)境下的測試

  ·?集成測試:一般是對單元測試下的多個最小單元組成的較大 組件 或模塊進行小型的組合測試,一般是在非瀏覽器環(huán)境下的測試。

  ·?端到端 測試 (E2E) : 從用戶的視角出發(fā),基于整個頁面或者應用,模擬用戶操作測試,一般是在瀏覽器環(huán)境下的測試

  如何編寫 單元測試

  在項目src目錄平級的位置,新建tests文件,tests文件夾下新建mocks文件夾

  ·?mocks下主要存放對應單元測試模擬數(shù)據的文件

  ·?tests下主要存放對應的單元測試文件

  如何模擬接口請求

  在項目中引入axios-mock-adapter第三方工具庫,在進行測試的test文件下新建Mock文件夾,然后新建 test-demo-mock.ts文件。

  詳細配置 github.com/ctimmerm/ax…

  import { mock } from '../../../src/setup-test';

  export const TestDemoMock = {

  ? getUsersTitle: (status: number) => {

  ? ? mock.onGet('/users/title').reply(status, { title: '江霧' });

  ? },

  };?

  編寫測試用例

  新建一個test-demo.tsx文件,編寫React組件

  import axios from 'axios';

  import { useEffect, useState } from 'react';

  const TextDemo: React.FC = () => {

  ? const [title, setTitle] = useState('測試');

  ? const getTitleValue = async () => {

  ? ? const response = await axios.get('/users/title');

  ? ? const { status, data } = response;

  ? ? if (status === 200) {

  ? ? ? setTitle(data.title);

  ? ? } else {

  ? ? ? // error

  ? ? ? setTitle('接口異常');

  ? ? }

  ? };

  ? const changeBtn = () => {

  ? ? setTitle('江霧');

  ? };

  ? return (

  ? ? <div className="test-dome-content">

  ? ? ? <span className="title"> {title} </span>

  ? ? ? <button className="refresh-button" onClick={getTitleValue}>

  ? ? ? ? refresh

  ? ? ? </button>

  ? ? ? <button onClick={changeBtn} className="change-btn">

  ? ? ? ? change

  ? ? ? </button>

  ? ? </div>

  ? );

  };

  export default TextDemo;

  新建test-demo.test.ts單元測試文件

  import { fireEvent, render } from '@testing-library/react';

  import TextDemo from '../../src/test-demo';

  import { TestDemoMock } from './Mock/test-demo-mock';

  describe('getUser', () => {

  ? it('mount title', async () => {

  ? ? const { container } = render(<TextDemo />);

  ? ? // 初始化期望 頁面標題為測試

  ? ? const title = document.body.querySelector('.test-dome-content .title');

  ? ? expect(title?.innerHTML).toBe('測試');

  ? });

  ? it('change title', async () => {

  ? ? await TestDemoMock.getUsersTitle(200);

  ? ? render(<TextDemo />);

  ? ? // 初始化期望 頁面標題為測試

  ? ? const title = document.body.querySelector('.test-dome-content .title');

  ? ? expect(title?.innerHTML).toBe('測試');

  ? ? // 點擊按鈕

  ? ? const btn = document.body.querySelector(

  ? ? ? '.test-dome-content .refresh-button',

  ? ? );

  ? ? fireEvent.click(btn!);

  ? ? await vi.waitFor(() => {

  ? ? ? const targetTitle = document.body.querySelector(

  ? ? ? ? '.test-dome-content .title',

  ? ? ? );

  ? ? ? expect(targetTitle?.innerHTML).toBe('江霧');

  ? ? });

  ? });

  ? it('change title error', async () => {

  ? ? // 模擬接口請求

  ? ? await TestDemoMock.getUsersTitle(201);

  ? ? render(<TextDemo />);

  ? ? // 初始化期望 頁面標題為測試

  ? ? const title = document.body.querySelector('.test-dome-content .title');

  ? ? expect(title?.innerHTML).toBe('測試');

  ? ? // 點擊按鈕

  ? ? const btn = document.body.querySelector(

  ? ? ? '.test-dome-content .refresh-button',

  ? ? );

  ? ? fireEvent.click(btn!);

  ? ? // 期望接口失敗內容為接口異常

  ? ? await vi.waitFor(() => {

  ? ? ? const title = document.body.querySelector('.test-dome-content .title');

  ? ? ? expect(title?.innerHTML).toBe('接口異常');

  ? ? });

  ? });

  });

  常見的命令

  ·pnpm run test : 執(zhí)行所有單元測試

  ·?pnpm test xxx.test.ts : 執(zhí)行某個單元測試文件

  ·?pnpm run coverage: 覆蓋率報告

  代碼覆蓋率報告

  執(zhí)行 pnpm run coverage 會生成coverage 文件夾,將其中的index.html 拖入瀏覽器中,查看具體的單元測試代碼覆蓋詳情。

Vitest 單元測試方案,單元測試,壓力測試,軟件測試,自動化測試,jmeter

  E2E快速補齊單測方案

  自動化錄制解決方案

  ·Chrome 插件 DeploySentinel Recorder

  ·?Chrome 插件 Headless Recorder

  ·?Playwrighg 官方的 CLI Playwright CLI Codegen

  ·?eTest 插件

最后我邀請你進入我們的【軟件測試學習交流群:785128166】, 大家可以一起探討交流軟件測試,共同學習軟件測試技術、面試等軟件測試方方面面,還會有免費直播課,收獲更多測試技巧,我們一起進階Python自動化測試/測試開發(fā),走向高薪之路

作為一個軟件測試的過來人,我想盡自己最大的努力,幫助每一個伙伴都能順利找到工作。所以我整理了下面這份資源,現(xiàn)在免費分享給大家,有需要的小伙伴可以關注【公眾號:程序員二黑】自提!

Vitest 單元測試方案,單元測試,壓力測試,軟件測試,自動化測試,jmeter

Vitest 單元測試方案,單元測試,壓力測試,軟件測試,自動化測試,jmeter文章來源地址http://www.zghlxwxcb.cn/news/detail-844761.html

到了這里,關于Vitest 單元測試方案的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 軟件測試之壓力測試詳解

    軟件測試之壓力測試詳解

    軟件測試中:壓力測試(Stress Test),也稱為強度測試、負載測試。壓力測試是模擬實際應用的軟硬件環(huán)境及用戶使用過程的系統(tǒng)負荷,長時間或超大負荷地運行測試軟件,來測試被測系統(tǒng)的性能、可靠性、穩(wěn)定性等。 常用的壓力測試軟件有:LoadRunner、Apache JMeter、NeoLoad、

    2024年02月04日
    瀏覽(21)
  • 軟件測試之壓力測試詳細整理

    ?? 視頻學習: 文末有免費的配套視頻可觀看 ?? 點擊文末小卡片 ,免費獲取軟件測試全套資料,資料在手,漲薪更快 壓力測試是一種軟件測試,用于驗證軟件應用程序的穩(wěn)定性和可靠性。壓力測試的目標是在極其沉重的負載條件下測量軟件的健壯性和錯誤處理能力,并確

    2024年02月20日
    瀏覽(16)
  • 軟件測試中的壓力測試是什么?

    軟件測試中的壓力測試是什么?

    壓力測試 壓力測試是一種軟件測試,用于驗證軟件應用程序的穩(wěn)定性和可靠性。壓力測試的目標是在極其沉重的負載條件下測量軟件的健壯性和錯誤處理能力,并確保軟件在危急情況下不會崩潰。它甚至可以測試超出正常工作點的測試,并評估軟件在極端條件下的工作情況。

    2024年02月06日
    瀏覽(23)
  • Jmeter進行壓力測試不為人知的秘密_jmter壓力測試,軟件測試面試項目

    Jmeter進行壓力測試不為人知的秘密_jmter壓力測試,軟件測試面試項目

    先自我介紹一下,小編浙江大學畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學效果低效又漫長,而且極易碰到天花板技術停滯不前! 因此收集整理了一份《2024年最新軟件測試全套學習資料》

    2024年04月22日
    瀏覽(24)
  • 軟件壓力測試對軟件產品起到什么作用?

    軟件壓力測試對軟件產品起到什么作用?

    一、軟件壓力測試是什么? 軟件壓力測試是一種通過模擬正常使用環(huán)境中可能出現(xiàn)的大量用戶和大數(shù)據量的情況,來評估軟件系統(tǒng)在壓力下的穩(wěn)定性和性能表現(xiàn)的測試方法。在軟件開發(fā)過程中,經常會遇到一些性能瓶頸和穩(wěn)定性問題,而軟件壓力測試的作用就在于發(fā)現(xiàn)這些問

    2024年02月12日
    瀏覽(25)
  • 軟件測試理論(1)壓力測試有哪些評價指標

    在進行壓力測試時,您可以評估多個指標來確定系統(tǒng)的性能和穩(wěn)定性。以下是一些常見的壓力測試評價指標: 平均響應時間 :請求的平均處理時間。 最大響應時間 :最長處理時間,用于確定是否存在性能問題。 百分位數(shù)響應時間

    2024年02月07日
    瀏覽(18)
  • 軟件進行壓力測試的主要目的

    軟件進行壓力測試的主要目的

    軟件進行壓力測試是指通過模擬大量用戶訪問和負載壓力,在正常和峰值使用情況下對軟件系統(tǒng)進行測試的過程。軟件進行壓力測試的主要目的是確保軟件在實際應用中能夠穩(wěn)定、可靠地運行,滿足用戶的需求。 ? 首先,軟件進行壓力測試的主要目的是評估系統(tǒng)的性能和穩(wěn)定

    2024年02月16日
    瀏覽(17)
  • 5款軟件壓力測試工具分享

    5款軟件壓力測試工具分享

    一、什么是軟件壓力測試? 軟件壓力測試是一種基本的質量保證行為,它是每個重要軟件測試工作的一部分。軟件壓力測試的基本思路很簡單:不是在常規(guī)條件下運行手動或自動測試,而是在計算機數(shù)量較少或系統(tǒng)資源匱乏的條件下運行測試。通常要進行軟件壓力測試的資源

    2024年02月02日
    瀏覽(19)
  • 軟件測評中心▏性能測試之壓力測試、負載測試的區(qū)別和聯(lián)系簡析

    軟件測評中心▏性能測試之壓力測試、負載測試的區(qū)別和聯(lián)系簡析

    在如今的信息時代,軟件已經成為人們日常工作和生活不可或缺的一部分。然而,隨著軟件的發(fā)展和應用范圍的不斷擴大,軟件性能的優(yōu)劣也成為了影響用戶使用體驗的重要因素。 軟件性能測試即對軟件在不同條件下的性能進行評估和驗證的過程。通過模擬多種真實場景和負

    2024年01月22日
    瀏覽(22)
  • 軟件為什么要進行性能壓力測試?

    軟件為什么要進行性能壓力測試?

    軟件為什么要進行性能壓力測試?隨著軟件應用的不斷增多和復雜度的提高,軟件的性能對用戶體驗和業(yè)務成功至關重要。性能問題可能導致軟件運行緩慢、崩潰或無響應,給用戶帶來不便甚至損失。為了確保軟件能夠在高負載和壓力下正常運行,性能壓力測試變得至關重要

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包