I 2026 defineres “profesjonalitet” innen WordPress-utvikling av én ting: Pålitelighet. Store klienter aksepterer ikke lenger at man laster opp kode og håper det beste.
Velkommen til guiden for enhets-testing (Unit Testing) i WordPress for 2026.
1. Filosofien: Testing i isolasjon
En enhets-test skal teste den minste mulige delen av koden – vanligvis én enkelt funksjon – uten å være avhengig av eksterne ting som databasen eller API-er.
- Problemet: Mange WordPress-funksjoner (som
get_post()) er knyttet til databasen. - Løsningen i 2026: Vi bruker Mocking. Verktøy som WP-Mock lar oss si: “Lat som om
get_post(123)returnerer dette objektet”, uten at vi trenger en ekte database.
2. Oppsett av phpunit 11
bruker vi Composer for å håndtere testverktøyene våre.
- PHPUnit: Selve rammeverket.
- WP-Mock: For å etterligne WordPress-funksjoner.
- Brain Monkey: For avansert etterligning av hooks.
// Et enkelt testeksempel i 2026
public function test_beregn_pris_med_mva() {
WP_Mock::userFunction('get_option', [
'args' => ['mva_sats'],
'return' => 25
]);
$resultat = MyPlugin::beregn(100);
$this->assertEquals(125, $resultat);
}
3. Testing av Gutenberg-blokker med jest
Siden moderne WordPress er bygget på React, må vi også teste JavaScript.
- Jest: Den raske og pålitelige test-kjørereren.
@wordpress/scripts: Gir et standardisert testmiljø for blokker.- Hva skal testes?: Sjekk at attributter lagres riktig, og at transformasjoner (som å gjøre et avsnitt om til en overskrift) fungerer.
4. Integrasjonstest vs. Enhets-test
Ikke bland disse to.
- Enhets-tester: Raske, ingen database, tester ren logikk.
- Integrasjonstester: Tregere, bruker en ekte (midlertidig) database, tester hvordan koden fungerer sammen med WordPress-kjernen.
- Anbefaling 2026: Sikt på 80 % enhets-tester og 20 % integrasjonstester.
5. Automatisering: CI/CD-løpet
Testing er ubrukelig om man glemmer å gjøre det. I 2026 iserer vi alt via GitHub Actions.
- Hver gang du pusher kode, starter en Docker-kontainer.
- Den kjører alle PHP- og JS-tester.
- Hvis en test feiler, kan ikke koden merges. Dette er “Zero Regression”-prinsippet.
Sammenligning: Manuell vs. Automatisert testing 2026
| Funksjon | Manuell testing | Automatisert testing (Unit/Jest) |
|---|---|---|
| Hastighet | Tregt (minutter) | Øyeblikkelig (millisekunder) |
| Dekning | Tilfeldig | 100 % logisk verifisering |
| Kostnad | Høy (arbeidstimer) | Lav (serverbruk) |
| Forutsigbarhet | Lav | Høy |
Eksperttips: Snapshot-testing
For Gutenberg-blokker bør du bruke Snapshot-testing. Jest tar et “bilde” av blokkens HTML-output. Hvis du ved et uhell endrer koden i en senere oppdatering, vil testen varsle deg nøyaktig om hva som har endret seg.
Konklusjon
Enhets-testing er ikke lenger en valgfri ferdighet; det er grunnmuren for enhver seniorutvikler. Ved å bygge et sikkerhetsnett av tester kan du utvikle raskere, endre kode med selvtillit og sove bedre om natten.
Slutt å gjette om koden din fungerer. Bevis det med tester.


