Gjenbruk og testing
skjedd i utgangspunktet. Det er imidlertid umulig å ikke gjøre feil i ny og ne, men en god strategi kan være som følger: Fiks, le og lær! Først retter du opp det som gikk galt, så ler du litt, og så gjør du det du kan for å unngå at det skjer igjen. I vårt tilfelle lærte vi at vi alltid må dobbeltsjekke bindinger i koden. Bonusen ble at vi fikk et eksempel vi kunne bruke til å demonstrere feilsøking og testing. Kanskje skjønte du hva feilen var, allerede før vi begynte å feilsøke. Det er i så fall kjempebra! Det er ofte lettere å se feil i koden som andre har skrevet, enn i koden man skriver selv. Dette er en av grunnene til at programmerere ofte ser over hverandres kode, gjerne mens de skriver den. Vi snakker mer om verdien av kodesamarbeid i kapittel 6.
2.6 Enhetstester
En enhetstest er en test som sjekker et lite stykke kode, altså en enhet. Det vanligste formålet med en enhetstest er å sjekke at dataene vi får tilbake fra en funksjon, stemmer overens med det vi forventer. I motsetning til testene vi lærte om i delkapittel 2.4, utfører vi ikke disse enhetstestene selv. I stedet skriver vi kode og lar datamaskinen utfører testene for oss. Slik ser src/routes ut når vi jobber med dette delkapittelet.
En samling med funksjoner som kan være til nytte flere steder i et dataprogram, kalles for et bibliotek (library på engelsk).
I dette delkapittelet jobber vi med disse filene:
• • •
_bibliotek/hjelpemidler-strenger.js er et bibliotek vi holder på å skrive. _komponenter/ErLikTest.svelte er en komponent som utfører én enhetstest. streng-testsamling.svelte er en testsamling med hjelpemiddelstrenger som bruker komponenten ErLikTest til å utføre tester.
Vi begynner med å lage ErLikTest.svelte som skal regne ut utfallet av én test og si om resultatet er som forventet eller ikke. 1 <!-- _komponenter/ErLikTest.svelte --> 2 <script> 3 4 5 6 7 8
/** Funksjonen vi ønsker å teste. */ export let funksjon /** Argumentene funksjonen skal få. Oppgis som et array. */ export let inndata /** Resultatet vi forventer at funksjonen skal returnere. */ export let forventetUtdata
9 10 11 12
let feil let erLike let resultat
13 14
try {
15 /* 16 * Når vi skriver "enFunksjon(...etArray)", 17 * legger datamaskinen inn verdiene i "etArray" 18 * som argumenter til funksjonen: 19 * Første verdi blir første argument, andre verdi
39