API hostimine kannab vastutust selle toimimise eest. Selleks pole paremat ega lihtsamat viisi kui automatiseeritud testimine sellise tööriistaga nagu Mocha.

Kaasaegne tarkvaraarendus kasutab API-sid suurepäraselt. Need toimivad üliolulise lülina kliendipoolsete rakenduste ja taustarakenduste, aga ka erinevate sisemiste või väliste rakenduste vahel.

API-d võimaldavad sujuvat suhtlust ja andmevahetust, võimaldades tarkvarakomponentidel üksteisega sujuvalt suhelda. Nende API-de töökindluse, funktsionaalsuse ja jõudluse tagamine on sujuva kasutuskogemuse pakkumiseks ja süsteemi üldise terviklikkuse säilitamiseks ülimalt oluline.

Seetõttu on oluline oma API-sid põhjalikult testida, et vead arenduse ajal märgistada ja parandada, et vältida võimalikke süsteemitõrkeid tootmiskeskkondades.

Node.js API testimine Mocha, Chai ja Chai-HTTP abil

Mocha on laialdaselt kasutatav testimisraamistik, mis ühildub erinevate JavaScripti raamistikud. Üks selle põhifunktsioone on paindlik testimisjuht, mis lihtsustab testjuhtumite tõhusat haldamist ja täitmist.

instagram viewer

Samuti toetab see erinevaid testimisstiile, sealhulgas sünkroonset ja asünkroonset testimist, võimaldades laia valikut testimisstsenaariume.

Teiselt poolt, Chai ja Chai-HTTP on väideteekid, mida saate kasutada koos Mochaga. Chai pakub laias valikus väljendusrikkaid ja loetavaid väiteliideseid, nagu peaks, ootama ja kinnitama. Chai-HTTP, Chai laiendus, pakub spetsiaalselt HTTP-päringute testimiseks ja nende vastuste kinnitamiseks loodud liidest.

Kasutades Mochat koos Chai ja Chai-HTTP-ga, saate API-sid tõhusalt testida. Testimise töövoog hõlmab järgmist:

  • HTTP-päringute tegemine määratud API lõpp-punktidele.
  • Oodatavate vastuste määratlemine.
  • Määratud allikast saadud andmete, HTTP olekukoodide ja muu valideerimine.

Samuti saate simuleerida API tõrketesti stsenaariume, mis sellistes olukordades tekkida võivad ja millised toimingud peaksid nende ilmnemisel käivitama.

Selle projekti koodi leiate sellest GitHubi hoidla.

Seadistage Express.js projekt ja MongoDB andmebaas

Alustamiseks luua Expressi veebiserverja installige need paketid:

npm install cors dotenv mongoose mongodb

Järgmiseks looge MongoDB andmebaas või konfigureerige pilves MongoDB klaster. Seejärel kopeerige andmebaasi ühenduse URL, looge a .env fail juurkataloogis ja kleepige andmebaasi ühenduse stringi:

CONNECTION_STRING="ühendusstring"

Seadistusprotsessi lõpetamiseks peate konfigureerima andmebaasiühenduse ja määrama oma kasutajaandmete jaoks andmemudelid. Vaadake selle projekti GitHubi hoidlas olevat koodi:

  • Konfigureerige andmebaasi ühendus, sisse utils/db.js.
  • Määratlege kasutajaandmete skeem models/user.model.js.

Määratlege API marsruutide halduri funktsioonid

Kontrolleri funktsioonid haldavad kasutajaandmete lisamist ja otsimist andmebaasis. Nende töötleja funktsioonide funktsionaalsuse tagamiseks testite, kas need suudavad edukalt andmeid andmebaasi postitada ja sealt tuua.

Loo juurkataloogis a controllers/userControllers.js faili ja lisage järgmine kood:

konst Kasutaja = nõuda('../models/user.model');

exports.registerUser = asünkr (req, res) => {
konst { kasutajanimi, parool } = req.body;

proovi {
ootama User.create({ kasutajanimi, parool});
res.status(201).saada({ sõnum: "Kasutaja registreeriti edukalt" });
} püüda (viga) {
konsool.log (viga);
res.status(500).saada({ sõnum: 'Ilmnes viga!! ' });
}
};

exports.getUsers = asünkr (req, res) => {
proovi {
konst kasutajad = ootama User.find({});
res.json (kasutajad);
} püüda (viga) {
konsool.log (viga);
res.status(500).saada({ sõnum: 'Ilmnes viga!!' });
}
};

Määrake API marsruudid

Loo uus routes/userRoutes.js faili juurkataloogis ja lisage järgmine kood.

konst väljendada = nõuda('väljendama');
konst ruuter = ekspress. Ruuter ();
konst userControllers = nõuda("../controllers/userControllers");

ruuter.post('/api/register', userControllers.registerUser);
ruuter.get('/api/users', userControllers.getUsers);
moodul.exports = ruuter;

Määrake oma serveri sisenemispunkt

Värskendage oma server.js faili järgmise koodiga.

konst väljendada = nõuda('väljendama');
konst cors = nõuda('kors');
konst rakendus = express();
konst port = 5000;
nõuda('dotenv').config();
konst connectDB = nõuda('./utils/db');

connectDB();

app.use (express.json());
app.use (express.urlencoded({ pikendatud: tõsi }));
app.use (cors());

konst userRoutes = nõuda('./routes/userRoutes');
app.use('/', userRoutes);

app.listen (port, () => {
konsool.log(`Server kuulab kell http://localhost:${port}`);
});

moodul.exports = rakendus;

Kirjutage ja viige läbi Mocha testjuhtumid

Kui kasutaja API on paigas, jätkake ja konfigureerige testkeskkond. Esmalt installige need paketid arendaja sõltuvustena.

npm installi mocha chai chai-http --save-dev

Nüüd lisage oma paketti.json faili järgmine skript.

"skriptid": {
"test": "mocha -- timeout 10000"
},

See käsk käivitab testjuhtumid – ajalõpu atribuudi lisamine sobiva väärtusega võimaldab teil kontrollida üksikute testjuhtumite täitmiseks lubatud maksimaalset aega.

See võib olla kasulik selleks, et vältida testide lõputut käitamist või liiga kiiret lõpetamist enne testjuhtumite lõppu.

Testige API lõpp-punkte

Loo juurkataloogis uus kaust ja nimeta see katsetada. Looge selles kaustas uus user.tests.js faili ja lisage järgmine kood POST-i lõpp-punkti testjuhtumi jaoks.

konst chai = nõuda('chai');
konst chaiHttp = nõuda('chai-http');
konst rakendus = nõuda('../server');

chai.use (chaiHttp);
konst oodata = chai.oodata;

kirjelda ("Kasutaja API", () => {
kirjelda ("POSTITA /api/register", () => {
see ("peaks tegelema kasutaja registreerimisega", (tehtud) => {
chai.request (rakendus)
.post('/api/register')
.saada({ kasutajanimi: 'testUser', parool: 'testpassword' })
.lõpp((eks, res) => {
kui (err) {
oodata (res).to.have.status(500);
oodata (res.body).to.have.property('sõnum').see.on.võrdne('Ilmnes viga!!');
} muidu {
oodata (res).to.have.status(201);
oodata (res.body).to.have.property('sõnum').võrdne("Kasutaja registreeriti edukalt");
}

tehtud ();
});
});
});
});

See kood määratleb testjuhtumi Chai ja Chai HTTP abil, et testida kasutaja API kasutaja registreerimisfunktsiooni.

See saadab määratud lõpp-punktile POST-päringu ja esitab kinnitused eeldatava API vastuse kohta, kontrollides, kas kasutaja registreerimisfunktsioon oli edukas või ilmnes tõrge.

Siin on testjuhtumi põhikomponentide jaotus:

  • oodata -See objekt võimaldab teil kasutada Chai kinnitusmeetodeid, et teha väiteid API oodatava vastuse kohta.
  • kirjeldada - See kirjeldab seotud testjuhtumeid koos, antud juhul teste, mis on seotud Kasutaja API. Pesastatud kirjeldus plokk rühmitab edasi seotud testjuhtumeid, antud juhul POSTITA /api/register. See aitab korraldada konkreetse funktsiooniga seotud testjuhtumeid.
  • seda - See funktsioon kirjeldab API lõpp-punkti eeldatavat käitumist.
  • lõpp - See funktsioon saadab päringu ja pakub vastuse käsitlemiseks tagasihelistamisfunktsiooni. Tagasihelistamise funktsioon teostab väiteid kasutades oodata funktsioon API-lt saadud vastuse kontrollimiseks.
  • tehtud - See funktsioon töötab, et tähistada testjuhtumi lõppu.

Lõpuks lisage GET-i lõpp-punkti testjuhtumi kood kohe pärast POST-i lõpp-punkti testjuhtumit.

kirjelda ('HANGI /api/users', () => {
see ("peaks tõmbama kõik kasutajaandmed", (tehtud) => {
chai.request (rakendus)
.get('/api/users')
.lõpp((eks, res) => {
kui (err) {
oodata (res).to.have.status(500);
oodata (res.body).to.have.property('sõnum').see.on.võrdne(„Kasutajaandmete toomisel ilmnes viga”);
} muidu {
oodata (res).to.have.status(200);
oodata (res.body).to.be.an("massiiv");
}

tehtud ();
});
});
});

Jätkake ja käivitage oma terminalis testskript kahe testjuhtumi täitmiseks.

npm test

Kui testjuhtumite täitmisel vigu ei esine, peaksite nägema sarnast väljundit, mis näitab, et testid on edukalt läbitud.

Testimise tõrked võivad ilmneda erinevatel põhjustel, näiteks võrguühenduse probleemid andmebaasi HTTP-päringute ajal, puuduvad vajalikud andmed, loogikavead ja muud probleemid.

Mocha teeb selliste vigade tuvastamisel ja esiletõstmisel head tööd, pakkudes terminaliaknas kuvatavates logides selgeid ja üksikasjalikke testiaruandeid. See võimaldab teil hõlpsalt tuvastada ja diagnoosida konkreetseid probleeme, mis testi ebaõnnestumised põhjustasid.

Mocha ei anna teile vabandust, et mitte oma API-sid testida

Oma API-de funktsionaalsuse käsitsi testimine selliste tööriistadega nagu Postman on kehtiv testimine lähenemine, Mocha ja muude testimisraamistike kasutamine automatiseeritud testimiseks viib selle järgmisse tasemel.

Nende testimistööriistade abil saate kiiresti ja lihtsalt automatiseerida teste, et katta laia valikut stsenaariume ja äärmuslikke juhtumeid. See võimaldab teil kiiresti tuvastada vead ja need enne API juurutamist lahendada, tagades kvaliteetse tarkvara tarnimise tootmisse.