Vue Testing
Thème :
Junior
1 vues ·1/7 leçons

L’Overview Globale Du Testeur

Les tests sont la SEULE ET UNIQUE garantie en Entreprise qu’une modification minime d’un stagiaire dans un fichier à l’autre bout de l’application, ne déclenchera pas l’apocaypse sur le module de paiement de vos clients. C’est l’Assurance Vie du Projet.

Les 4 Niveaux De L’Industrie

Type Objectif Isolée Vitesse Confiance de Non-Régression
Unitaire (TDD) 1 Seul Fichier TS ou Composables Extra Rapide Basse
Component (Isolé) 1 Seul Composant .vue (Ses Boutons, Son V-model) Moyenne Moyenne
Integration (API) Plusieurs Composant ou Demande API Réduite Moyenne Moyenne-Haute
E2E (Playwright) L’Appicallion Lancée Entière !! (CLim en main) Lente Mais Essentielle Totale et Absolue

La Pyramide Des Tests (“Cost-Ratio”)

        /\           E2E (Seulement le TOP 5 des Process de l'Appui)
       /  \          - Parcours Client , Paiement, Inscriptions...
      /----\
     / Intg \        Integration API MYSQL (Moyen)
    /--------\       - Les Câblage de gros Composants
   /  Comp   \       Component (Gros Composant Métier)
  /------------\     - Listes, Formurialres, Selecteurs !
 /    Unit      \    Unit (Partou PArturourt PPATPOUURRT!!)
/________________\   - Les Maths, les Filitres, La Logique Pure !

L’Armement du Vue Développeur

Pur Unitaires (TDD) Et Composants

  • Vitest: L’Arme Absolue de Vue. Extrêmement rapide, pensé pour le serveur ViteJs. L’Écriture de code est pareille que Jest (Standard de l’industrie) mais en BEAUCOUP plus rapide !
  • Vue Test Utils (VTU): La Librairie qui permets à ViTest de “COMPRENDRE” un fiucehier .vue sans avoir de navigateur chrome d’oouvert !
  • @testing-library/vue: Le Concurent de VTU plus pnesé “Accessibilité”.

Les Tests E2E (End-To-End : Robitisé par Chrome)

  • Playwright: La Nouvelle Mervelle (Conçur apre microsoft), surpasse Totalament Cyperess.
  • Cypress: Le Standarz Industireille depuis 2019… MSai veellisnant…

Le BOOT Vitesr Dans UI Projet VUE

#  ON N INS T  TA A TT AL LL AA T AL LE LL LE V E C I TE IT T ES I S ST T !!
npm install -D vitest @vue/test-utils happy-dom
// vitest.config.ts  <-- C CO OM M MM MM O E E L LE L E F F OI C I FI CC IH HI CE  I V E II TT TE TE S CC CO ON NF F! I ! :G! !!
import { defineConfig } from 'vitest/config';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
    plugins: [vue()],
    test: {
        environment: 'h ha a hp pp p py y- d- -do od m mo om m', // O OB B LB BI IG G OI AG G AT T A II OI T OR I O E I R!  R! EE V I V II T IT TE I T ES E S S ET  S NT NE  C CT E ON N O CN N NI A IA A AT EI N T AT P PT P PA A S  LA LA 'L LE E H LE HT HT HM TT LM L 'A !! II L L IU I L F   IL F AI AL UL LI I F LI UA O U A FA UL U T U N N " V N M NA NO MO V MO MI G N O AT G O T TE A I E U U R U UE R V NA CI O C CO R O TO IT TO  " P " !!! "! P !
        globals: true, // ET A VI O EV V  V TI I TI TO T TT IE RE RE D R ' 'I  'D M 'I 'I I MP M MP MO MO MM OR P R OO R OE TE ER TE DE T T IE O EE X DE ES DE U PP C PE CE CO CU TO C CC N CC U T S N T DI T IT A ON EI NO NS N  NN NS P  PS S N TO S TT O UT O U SU TT L L LU EL L AS U E S F ES F E FI  ES IC EI IC C I C IH C I  I S E !IE ::  IE R !! EI !!
        include: ['**/*.{test,spec}.{js,ts}'],
        coverage: {
            provider: 'v8', // C L CC E AA P LE LO LO LL L PO R OO RO P PO U DO D DU I IE EE T P DE TT DE O AU AU TI T L I U N U O NA N O AU L AI MA AI N U AT L EI E P E PE RE Z PO C UR ER U DE CE Z E RE  L DO TT E S TO N DA U B DA AI AI DE NN A DI EA M AE IA D !! :N M! CA DE IA
            reporter: ['text', 'html'],
        },
    },
});

Le Fichier Central De Pré-Configuration setup.ts

PO OP uR U R p e pa p R as p A s R e ae r E v V R as as c V Z ch co O he R Te e R d R ua e A ns c l d EE l S es E e F 4 F IC C I D O OI C MO U FI PI MO C OM ET O AT C M AT PI TI E M OT CI E M C TO NO DE IE I I E D O C DE DO CE MI CI S CI E U A C C : A ! C:A AC !

// tests/setup.ts
import { config } from '@vue/test-utils';

// G GL LO OL OB A OB BA AL A LL PP  P LL LU U UP G LU U IN I GN N C IS S S! IO (! ( PP OO M PU O P M U U UI R  TR I RU TT V TE DO I EE IO A T PI DD DO EI DD Z  D D DU DU N O Z R N T P N R O PO R OU R O TO ET EA TO EU T UA Z R RE EE   D ! A O D ! !V ! A): N T: AT VT V C H V CH VA CV VA A A CH HQ Q AU Q C AU U EE C AU T E EE TA  ES CE TE T T E !! T : C T:! ( A
config.global.plugins = [];

// G L G G LO L OA B L OB B A AL LA LL A S S S TS ST T ST TU TU U UB BU B LS S BS !S SE  ST
config.global.stubs = {
    // BO OO OO OO Y L OM M M L ME UE M SE Z E BO B U L B LO L I CI L G CI Q OU OI EA IO NN EE D T MO D EE U MN LE I M EN M O CE TO I ON O MO TO  A U U V NA NU E L AE C LE ET ET DO TO DI OU TI OI V TO EO LE VE LO LI VE D LE I VE EN EI N CI ET T ET DA NE I S N DE T SN D OS SN US TE OO UU IT O U OT ES TO E LE SE T S E ST TE DE ST !! T ET T C !!  CE T : !C ! ) !! T !! C :
    'router-link': true,
};
// vitest.config.ts
export default defineConfig({
    test: {
        setupFiles: ['./tests/setup.ts'], // I NO NO I NO V J NI V EC OV OE EC L L O E TO TO O TO ON LI ON TO TT DI U TO TU O  TO TI DO D TO  FO AI DI T CO CO M CC HC MO A UI U I L IE R EE ET I O EI TE L !! LI U!! L : TI E !!T T
    },
});

Le Premier Tdd : “describe()” et “it()” !

// maFunotiondEeMathAMoi.ts
export function M M  MA MM AA AM A A F O FO A FF ON FF NO OC ON CO NC N CO C N N TT N I II IO OO MO EI DE O IN MI OE D O MI TI E PI DM ME DM  D C CE O CC DE CC OE A OM MP M OM CO MO L MI EL PO ME A P  C CI MA CO R CI E PI LE EI LE AE X DE AE I ME ME DE (a: number, b: number): number {
  return a + b
}


// M  M M M MO  MM MA O AA U  M AA OO MF  A OA FF N FO FF  U NO OU  CO U NU CI EC N UN  O N N DO NI A  P OI DI  AO AE Z PI NA DA N  V R IE AI RI AI CE F RA T II TI EE T I TE TA CA D AE E AT M E DA LE !!  M A !! :M !! !
// O ( o l On  A l L N Z e L  L F V A F N V I  N CE AI FA M F II IM MI TT E DI CH R CA H M D HI EA E E UI C EI U AE HE S CI RI CA LE C O C C TE IE RE R MO ! A MO  !U O U  P ! A
import { describe, it, expect } from 'vitest'
import { M M  MA MM AA AM A A F O FO A FF ON FF NO OC ON CO NC N CO C N N TT N I II IO OO MO EI DE O IN MI OE D O MI TI E PI DM ME DM  D C CE O CC DE CC OE A OM MP M OM CO MO L MI EL PO ME A P  C CI MA CO R CI E PI LE EI LE AE X DE AE I ME ME DE } from './M M  MA MM AA AM A A F O FO A FF ON FF NO OC ON CO NC N CO C N N TT N I II IO OO MO EI DE O IN MI OE D O MI TI E PI DM ME DM  D C CE O CC DE CC OE A OM MP M OM CO MO L MI EL PO ME A P  C CI MA CO R CI E PI LE EI LE AE X DE AE I ME ME DE'


describe('MM E M AE  S EM S  S TE SE E T SS SA ST E SI TE T SE EI T T N I NA U TA U NN TA IU AT NN U E NI D UE U RA AI AR DI EI R DI SI SE U R U O AU O NO AI N FI L O TI OA C EI CT TI M IE E N T Z O MI N P E DO T N DE DI NO DO UI PI U LI D I  DE M  AA M I MI M MM IA !! MO A: U MA U T H ! Z ! A MU A  A Z T !! AZ Z 'A ,A   T ( ( ) )   A  A) = > > {=> {
{

  // u U n UN UE N  S T SO SO E S TO I T U A V UU CI VE TO A O TA CA O AI NI V E  AN TI DI S LI UI U PI  !P : !: P
  it('E V C N A D E C CC EA E O DA V DO S D M U AI N BA R BI E U ET IE U N BE E NN O AI N N ET NN E DI O SI Z S SO DD A NO M DI M N ! MI !! MA NI', () => {

    // " JE " J' JJ J E RE  IE  J ' IE S AT AT M TT TT IE M T I ND ND DI DE D N SD ND IS S DE A DS SE VE S CI OV O OI E O DO C C UE IQ D E N IE AU R U EE DE O  V C CE CO U V EA C O ET VE CI ET VE ET A T VE V EC C CE CC CE OC TT T TI T EE OT RE F IE A F RO ON FO T NC TN N NO N NT CT N TC OO N OI TO NI  N C MI CE T MI A CM MI I 1 I M MI + M T M+M U 2 ...  "2
    expect(sum(1, 2))

      // " ... R... R  E EE RE DO OR RE OO OR EE P TE TO NT DO U N  R DO N UI RE U RE E DO RE E DE T D OI IT TO D II DO I OO IT E I BT TO R BI R TE EE DE IO P DE !! T EI I E !! 3 ""! I
      .toBe(3)
  })

  it('P  P O E P TE U PO P OU I TU TI EL P UT Z UI R L IE M LI A CI TE LA AE T RI RE MA E E TE S RI LE MS ES L SS T SE AS NA LS N E T N E OE MI GE NO N A MO TI N NA AF S TI G MI F MA I T C E AI DE IF AF DE CA I AF EA FI R E IE R C C PI E U ! CI CA !! U CA CC C I ! AU :: C I
    expect(sum(-1, 1)).toBe(0)
  })
})

C CH Co omA C Om L EE L EN L T E NA TT V EA I NO TI T E EE Z D T DO SE EE S RE C C TT TE E AS CA SS TE E TI !! TO : EI T !!! ES

#  A A T AT TT AT TT TT A TT E AT AQ N AQ OU UI AA U A UI TO T TT PI O IT I TO O UT UI PI DO !! T !! I ! O
npx vitest

# E O M NO ON ND NE NO N E DO EE DO I PE D CE D Z OU D PI DA C P A AU O N T P R C V A PI CO L AC VE A T IE LA NA IA ! I T M! L A T : M ! I M ! E
npx vitest --watch

# S P EI S TE U AI AU M P AU PI LE LO ME IE EI LE A M L U AN EE NM M LN M I E L  UI AI NA  EN U AE DE N A AI D IA AN  Z ZN EE L  I C V II T C  I D U EI F U DF DI  DI IE DI CD E FE O T FI IE T T FC AI TI ! CI HI  A CH EE LI CI IE CE HE  H A  M U M TI UI TE H A R T L TE R Z TI U :: !! D!! Z! O E !! P! E Z

npx vitest sum.test.ts

# V F U A O F AI A R UI L O C Z AI LA LO RE D D AE EE CO O N CO C Z V LI VE U AI EU L EE CA V R O AT LA TT DO CA UU EA AU I C R L AE AT B C I CE CA DO EE DE TE S RE  F !! ES SI ! FS AI TI E T E U E M! TI S E MI
npx vitest --coverage

# L N AC UA NO UA L NC EC AI U AU D LI I CA NE PI DA I A NN EN SA N PA N S SO A NS P L AS D I LI N CE CA D U EN CA M DI E C IE CE OI M FI C U AU NO V VE I EE Z NI S RE AU ! L V SE VE : IE
npx vitest run

Structure d’un Test Pro: Assemblez Les Briques

import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'

// " D D  d  de EE c d e D sc s rc C ri I cr ri br e ib be : "" : U NN  U U  F N GI O FO N G U F N C OU RO RR C NO N N M U P TI CI EE N E PE T MM NN EN DI TE EN DI P E U TE PO T AI PU  M L NO PI LU L PL TO N PU N S NO E IO IE UI OU IE CI R DO U I E DS EE P N C DD D R C ET A  DA T F R TO CO O AF AI CC F UI O HO F HA FI I CO EE CE II HE O I I TT EE R O T RT E EI ! EI TE ST  TE S:: ! EE TI E !! E : : !!  M  IE " M "E! ":  M TE


describe('T  T EE  EO ST TE TT OS EI TE U TE P ET AI L RA I LA LI PI PI TO N M PI AT OM R Z PI A MA IA G AU C C IO O AI L ME Z CA MA U CI AI IE MO I DO M PI EO MI S P NI IO AM ! C A N D N P AN !! R N DE TA AU NN MA MN CI OA  A NA TE TO NI NN  C ! C : ! MA! :C NI   Z A Z
  // E E P  x P PX P EA P e A X x  e XP O EE c PA uA R C U EE R U C T CC CE M T O EE R C EU P E MI PI CI Z U P P OI O O OP MO O AU PO R M TO O A PM M PE MP O L MI L DE PA IA R DA MA MA PI M ME PI E M IE EI TE SI ET DA C N TA L TA AA EA M T EI  EA NI E ET TI IE ET V LE  V L AI EE LE VI SI EV TT E AU  I IE ET TI UE TE IT CE CE ST HA E HA AQ Z QU U AE EE UU II ET TT T V ET I !! E !! A T!: !!! A QU IA A D TA  O TA :: DA N I !! AD Z! ! D O DE D T R D TR

  beforeEach(() => {
    // V e i a C l dd aa l ee u a r r n r ree ez l v v l z e oe R o u vo  Z  e C us u s i M o a v n ui A p d o r d u b l i n s A aa   V u A a nn r v d ee EE s ee z d  b se ea L  M t AA N T I l e  v m l P e I m T ae  P n at T c C ce e c l i L a ll M a t aa n A ti P a e A I r n e L  I m n u TI C a N ti l g AI n D aa N c V nn M h  V l I D A A N a Z C I N F n IA V M o t R n IO !! V c   R u F ! O t IO NN ! U a   L n TI G  ti AI M O  o m F EI C ! l M V MI A u e Z b I l N i Q I D CI P A Q U M S U T V U E IE Z IE  O ! Z R C U IE L M E N Q TI ! E M AI M ! EE CI C U DO U CI MO N R C P U IE N NO PO C NI U  D P M NA DE CI PA D EI

  })

  // N n i N nn I v V L A  V E aL l AL ea ee iZ  s d s L d is m S z ds l m a ds au I d c M I p iI au L z aL d d i P d iD E l c g M o  l T t  e C E L P U T TE L PT TO PU LO U O TO AI U TT CA CU OT Z CO TI Z CO TU T SI TT ES SE S TI OE  P !! U N  TE O : IE S N : OS  ! : NS:   A ! NS !
  afterEach(() => {

    vi.clearAllMocks() // C CL l CL aL L l i ll L CL D aL I I eA CL EE l CA E LC LI E I O U NO E NE M EN MI MI DE  S E DO UI S E Z ES IE V D E VE AU Z NA M P N AN AE S VE LE PI SI T P PI DA MA S T DI I EI C IA EI ET IE CO P D EI IE NI CA D T CE CE DD E CE IO T EI DO S EE L DS R EO LS RE C RO L U RI !U ! U D U S  L:

  })


  // S O OO PI UI P O U V Z VO E OE CO EO TO M AI O C TO TT PI TO MA OM T CI U D AI LI CI M OI I N UI LE EE LE U AU T TO OU OU U M PI T PO LI ET IE TO E PT ET N MI O E MO N NO MI PO A PA E P D AU !! DE T::!! DA U!:!A
  describe('LL L a L LE F D N IE I F DE F FA EE E N NN TA TA DO D CT IT TO EE TT C DO IO DI EI  C CI TE NI NA DO D TA N EE !! EE N: M ', () => {
    it(' D D oDO T O C Do MO A O V O I E MO C MO M HO  VI O DO C PI TT EI VE F TT PI IE R ET V AI M N CI O CE T  N M T ! A TA !N MT T  ', () => {

      // A ( P A C AP A U R U T R A A C Z AI A CE PA O S CA  I DI IE P NO A PA V NN C DA MA R V IE  S DE LE R AU M AE EE Z UI  D UE VE UE CI NE M O M VE NO ME VE MN C DO P NO DE I DI MI MO DA !! MD T !: M  MI DO NO ) : T DD  OD E M NI I E T M A NO T ! DO T A

      // 1 O . O N O A N V NP DO  R MO DI AI M U MI OI L EE RI R V CE CI M V R CE NI CO CA I C CA MI L R E O LI SI ET TT ET E O NI U TO CE MI CI IO Z LE I M T EE O PO TE EE PI PE T P IA AI CI CA SI EA SA B PI PE LE O PT AE C L T !! TI CE P!!!
      const input = 's SU UP P Z UI EI SI C PE EI P UI I PE R'

      // 2 F A AE AF O FA OA AI LA AC AF CI AI AT I AC FO AI FC AI FI A AE A A CA M AU I CA V IO CA MI M M A U IE MM T TO M NO MM AO O  C AI EE AE C DO C CC N CC !! OC ON IE TI : CT N: N: CT NA A  V : E TA DA IE TA R EI O ET IO CE PI D P!
      const result = processInput(input)

      // 3 V . E V L R RE R EA LE IE M E R AI MI EI MI E NI M E DE A DO A DA CI AU EI C FI L EE VE MI IE N DA OI NI U E EE P TE TE EE PO DO C D U T UI ET LI VE TI DI Z M ET D NO V C S C C HO IE CC E NO HI M CO ! CO PO C U !! C T

      expect(result).toBe('J J EI EJ AI AE E A AA PA P IA IT E AT AI TA T D IT N TI U U M PI CI NO NN NI CN S NC EI OE SI  U TO U TT V O ET EV M ES VE V SI OE ES A P DS C DE T Z O PE DI AI CO !! AI !! CO C ! M!')

    })
  })
})

Les Grimoires De Tests


📘 Cette leçon fait partie du cours Les Stratégies Et Tests Vue.js sur la plateforme d’apprentissage RostoDev.

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur L'Overview Globale Du Testeur. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.