Avmystifiera JavaScript-Test

0
16

Många människor har chattade mig, förvirrad om var att komma igång med att testa. Precis som allt annat i mjukvara, och vi arbetar hårt för att bygga abstraktioner för att göra vårt jobb enklare. Men att mängden av abstraktion utvecklas över tid, tills de enda som verkligen förstår att det är de som byggt uttag i första hand. Alla andra är kvar med att ta form, Api: er och verktyg till nominellt värde och kämpar för att få saker att fungera.

En sak som jag tror om abstraktion i koden är att den abstraktion är inte magi — det är en kod. En annan sak jag tror jag om abstraktion i koden är att det är lättare att lära sig genom att göra.

Tänk dig att en mindre erfaren ingenjör närmar dig. De är hungriga på att lära sig, de vill vara säkra på sin kod, och de är redo att börja testa. 👍 Ständigt beredd att lära sig från dig, de har skrivit ner en lista av termer, Api: er och begrepp som de skulle vilja att du definierar för dem:

  • Påstående
  • Testa Ram
  • Den beskriva den/det/beforeEach/afterEach/testa funktioner
  • Hånar/Stubbar/Test Doubles/Spioner
  • Enhet/Integration/avsluta för att Avsluta/Funktionell/Accessibility/Acceptans/Manuell testning

Så…

Kan du rabbla definitioner för att blivande ingenjör? Kan du förklara skillnaden mellan ett påstående bibliotek och ett test ram? Eller har de lättare för dig att identifiera än att förklara?

Här är poängen. Ju bättre du förstår dessa regler och abstraktioner, desto mer effektiv kommer du att undervisa dem. Och om du kan lära dem, kommer du att vara mer effektiva på att använda dem också.

Ange ett lär-en-ingenjör-att-fisk ögonblick. Visste du att du kan skriva din egen påstående bibliotek och testa ram? Vi tänker ofta på dessa abstraktioner som bortom vår förmåga, men det är de inte. Var och en av de populära påstående bibliotek och ramverk började med en enda rad kod, följt av en annan och sedan en annan. Du behöver inte några verktyg för att skriva ett enkelt test.

Här är ett exempel:

const {summa} = require(‘../math’)
const resultat = summa(3, 7)
const förväntas = 10
if (result !== förväntat) {
kasta nytt Error(`${resultat} är inte lika med ${förväntas}`)
}

Sätta in det i en modul som kallas test.js och kör man med nod test.js och, poff, du kan börja få övertygad om att summan funktion från math.js modulen fungerar som det är tänkt. Gör som körs på CL och du kan få förtroende för att det kommer inte att bryta förändringar är gjorda för att kodbasen. 🏆

Låt oss se vad ett misslyckande skulle se ut med denna:

Terminal-fönster som visar ett felmeddelande som anger -4 är inte lika med 10.

Så tydligen vår summan funktion är att subtrahera snarare än att lägga till, och vi har kunnat för att automatiskt upptäcka att genom denna skrift. Allt vi behöver göra nu är att fixa summa-funktionen, kör vår test-script igen och:

Terminal-fönstret som visar att vi körde vårt test script och inga fel har loggat in.

Fantastiskt! Skriptet lämnat utan ett fel, så vet vi att summan funktionen är aktiv. Detta är kärnan i ett test ram. Det finns en hel del mer (t ex trevligare felmeddelanden, bättre påståenden, etc.), men detta är en bra utgångspunkt för att förstå grunderna.

När du förstår hur de abstraktioner arbete på en grundläggande nivå, kommer du antagligen att använda dem eftersom, hej, du har just lärt dig att fiska och nu kan du gå och fiska. Och vi har några ganska fenomenal fiske omröstningar, öh, verktyg tillgängliga för oss. Min favorit är den Skämt testa plattformen. Det är otroligt duktiga, fullt utrustad och tillåter mig att skriva tester som ger mig det självförtroende jag behöver för att inte bryta saker som jag ändra kod.

Jag känner att grunderna är så viktigt att jag ingår i en hel modul om det på TestingJavaScript.com. Detta är platsen där du kan lära dig smarta, effektiva sätt att testa någon JavaScript-applikation. Jag är verkligen nöjd med det jag har skapat för dig. Jag tror att det ska hjälpa till att öka din förståelse av testverktyg och abstraktioner genom att ge dig chansen till att genomföra delar från scratch. (Hoppfull) resultatet? Du kan börja skriva tester som är lätt att underhålla och byggd för att ingjuta förtroende i din kod, dag efter dag. 🎣

Early bird-rea som pågår just nu! 40% rabatt på varje nivå! Försäljningen kommer att försvinna i de kommande dagarna så ta denna ASAP!

TestingJavaScript.com – Lär dig smart, effektivt sätt att testa någon JavaScript-applikation.

P. S. Ge det ett försök: Tweet vad är skillnaden mellan ett test ram och ett påstående bibliotek? I min kurs, jag ska inte bara förklara det, vi ska bygga våra egna!