Hostenie API nesie zodpovednosť za to, že funguje. Neexistuje lepší alebo jednoduchší spôsob, ako to urobiť, ako automatizované testovanie pomocou nástroja, ako je Mocha.

Moderný vývoj softvéru vo veľkej miere využíva API. Slúžia ako kľúčové prepojenie medzi aplikáciami na strane klienta a aplikáciami typu backend, ako aj medzi rôznymi internými alebo externými aplikáciami.

Rozhrania API umožňujú bezproblémovú komunikáciu a výmenu údajov a umožňujú softvérovým komponentom bezproblémovú vzájomnú interakciu. Zabezpečenie spoľahlivosti, funkčnosti a výkonu týchto rozhraní API je nanajvýš dôležité pre zabezpečenie bezproblémovej používateľskej skúsenosti a zachovanie celkovej integrity systému.

Preto je dôležité dôkladne otestovať vaše API, aby ste označili a opravili chyby počas vývoja, aby ste predišli potenciálnym zlyhaniam systému v produkčnom prostredí.

Testovanie Node.js API pomocou Mocha, Chai a Chai-HTTP

Mocha je široko používaný testovací rámec, ktorý je kompatibilný s rôznymi JavaScriptové rámce

instagram viewer
. Jednou z jeho kľúčových vlastností je flexibilný testovací bežec, ktorý zjednodušuje proces efektívneho riadenia a vykonávania testovacích prípadov.

Podporuje tiež rôzne štýly testovania vrátane synchrónneho a asynchrónneho testovania, čo umožňuje širokú škálu testovacích scenárov.

Na druhej strane, Chai a Chai-HTTP sú knižnice asercií, ktoré môžete použiť v spojení s Mocha. Chai poskytuje širokú škálu expresívnych a čitateľných rozhraní tvrdení, ako by mali, očakávať a tvrdiť. Zatiaľ čo Chai-HTTP, rozšírenie Chai, poskytuje rozhranie špeciálne navrhnuté na testovanie požiadaviek HTTP a presadzovanie ich odpovedí.

Použitím Mocha v spojení s Chai a Chai-HTTP môžete efektívne testovať API. Pracovný postup testovania zahŕňa:

  • Vytváranie požiadaviek HTTP na zadané koncové body rozhrania API.
  • Definovanie očakávaných odpovedí.
  • Overenie prijatých údajov zo zadaného zdroja, stavové kódy HTTP a ďalšie.

Môžete tiež simulovať scenáre testovania chýb API, ktoré môžu v takýchto situáciách nastať a aké akcie by sa mali spustiť v prípade, že nastanú.

Kód tohto projektu nájdete v ňom úložisko GitHub.

Nastavte projekt Express.js a databázu MongoDB

Začať, vytvorte expresný webový servera nainštalujte tieto balíčky:

npm install cors dotenv mongoose mongodb

Ďalšie, vytvorte databázu MongoDB alebo nakonfigurovať klaster MongoDB v cloude. Potom skopírujte adresu URL pripojenia k databáze, vytvorte a .env súbor v koreňovom adresári a vložte reťazec pripojenia k databáze:

CONNECTION_STRING="reťazec pripojenia"

Na dokončenie procesu nastavenia musíte nakonfigurovať pripojenie k databáze a definovať dátové modely pre vaše užívateľské dáta. Pozrite si kód v úložisku GitHub tohto projektu:

  • Nakonfigurujte pripojenie k databáze v utils/db.js.
  • Definujte schému údajov používateľa v models/user.model.js.

Definujte funkcie obsluhy pre trasy API

Funkcie regulátora budú riadiť pridávanie a získavanie užívateľských údajov v databáze. Na zabezpečenie funkčnosti týchto funkcií obsluhy otestujete, či dokážu úspešne odosielať a načítavať údaje z databázy.

V koreňovom adresári vytvorte a controllers/userControllers.js súbor a pridajte nasledujúci kód:

konšt Používateľ = vyžadovať('../models/user.model');

exports.registerUser = async (req, res) => {
konšt { meno používateľa, heslo } = req.body;

skúste {
čakať User.create({ meno používateľa, heslo});
res.status(201).odoslať({ správu: 'Používateľ sa úspešne zaregistroval' });
} chytiť (chyba) {
konzoly.log (chyba);
res.status(500).odoslať({ správu: 'Nastala chyba!! ' });
}
};

exports.getUsers = async (req, res) => {
skúste {
konšt užívatelia = čakať User.find({});
res.json (používatelia);
} chytiť (chyba) {
konzoly.log (chyba);
res.status(500).odoslať({ správu: 'Nastala chyba!!' });
}
};

Definujte trasy API

Vytvorte nový routes/userRoutes.js súbor v koreňovom adresári a pridajte nasledujúci kód.

konšt vyjadriť = vyžadovať('expresné');
konšt router = expres. Router();
konšt userControllers = vyžadovať('../controllers/userControllers');

router.post('/api/register', userControllers.registerUser);
router.get('/api/users', userControllers.getUsers);
modul.export = router;

Definujte svoj vstupný bod servera

Aktualizujte svoje server.js súbor s nasledujúcim kódom.

konšt vyjadriť = vyžadovať('expresné');
konšt kors = vyžadovať('cors');
konšt app = express();
konšt prístav = 5000;
vyžadovať('dotenv').config();
konšt pripojiťDB = vyžadovať('./utils/db');

connectDB();

app.use (express.json());
app.use (express.urlencoded({ predĺžený: pravda }));
app.use (cors());

konšt userRoutes = vyžadovať('./routes/userRoutes');
app.use('/', userRoutes);

app.listen (port, () => {
konzoly.log(`Server počúva na http://localhost:${port}`);
});

modul.export = aplikácia;

Napíšte a vykonajte testovacie prípady s mochou

S nasadeným používateľským rozhraním API pokračujte a nakonfigurujte testovacie prostredie. Najprv nainštalujte tieto balíčky ako závislosti pre vývojárov.

npm nainštalovať mocha chai chai-http --save-dev

Teraz pridajte nasledujúci skript do súboru package.json.

"skriptá": {
"test": "mocha - časový limit 10 000"
},

Tento príkaz vykoná testovacie prípady – pridanie vlastnosti timeout s príslušnou hodnotou vám umožní riadiť maximálny čas povolený na vykonanie jednotlivých testovacích prípadov.

To môže byť užitočné na zabránenie spusteniu testov na neurčito alebo príliš rýchlemu dokončeniu pred dokončením testovacích prípadov.

Otestujte koncové body API

V koreňovom adresári vytvorte nový priečinok a pomenujte ho test. V tomto priečinku vytvorte nový user.tests.js súbor a pridajte nasledujúci kód pre prípad testovania koncového bodu POST.

konšt chai = vyžadovať('chai');
konšt chaiHttp = vyžadovať('chai-http');
konšt aplikácia = vyžadovať('../server');

chai.use (chaiHttp);
konšt očakávať = chai.očakávať;

opísať ('User API', () => {
opísať ('POST /api/register', () => {
to („mal by zvládnuť registráciu používateľa“, (hotovo) => {
chai.request (aplikácia)
.post('/api/register')
.send({ užívateľské meno: 'testUser', heslo: 'testpassword' })
.koniec((chyba, res) => {
ak (chyba) {
očakávať (res).to.mať.stav(500);
očakávať (res.body).to.mať.majetok('správa').to.je.rovnaké('Nastala chyba!!');
} inak {
očakávať (res).to.mať.stav(201);
očakávať (res.body).to.mať.majetok('správa').rovnako('Používateľ sa úspešne zaregistroval');
}

hotový();
});
});
});
});

Tento kód definuje testovací prípad pomocou Chai a Chai HTTP na testovanie funkčnosti registrácie používateľa používateľského rozhrania API.

Odošle požiadavku POST na zadaný koncový bod a vykoná tvrdenia o očakávanej odpovedi API, pričom overí, či bola funkcia registrácie používateľa úspešná alebo či sa vyskytla chyba.

Tu je rozpis hlavných komponentov testovacieho prípadu:

  • očakávať -Tento objekt vám umožňuje používať metódy tvrdenia Chai na vytváranie tvrdení o očakávanej odpovedi z API.
  • popísať - Opisuje súvisiace testovacie prípady spolu, v tomto prípade testy súvisiace s Používateľské rozhranie API. Vnorený popis blokuje ďalšie skupiny súvisiace testovacie prípady, v tomto prípade POST /api/register. Pomáha to organizovať testovacie prípady špecificky súvisiace s konkrétnou funkciou.
  • to - Táto funkcia popisuje očakávané správanie koncového bodu API.
  • koniec - Táto funkcia odošle požiadavku a poskytuje funkciu spätného volania na spracovanie odpovede. Funkcia spätného volania vykonáva tvrdenia pomocou očakávať funkcia na kontrolu odpovede prijatej z API.
  • hotový - Táto funkcia sa spustí na označenie konca testovacieho prípadu.

Nakoniec pridajte kód pre testovací prípad koncového bodu GET hneď za testovací prípad koncového bodu POST.

opísať ('GET /api/users', () => {
to („mal by načítať všetky údaje používateľa“, (hotovo) => {
chai.request (aplikácia)
.get('/api/users')
.koniec((chyba, res) => {
ak (chyba) {
očakávať (res).to.mať.stav(500);
očakávať (res.body).to.mať.majetok('správa').to.je.rovnaké(„Pri načítavaní údajov používateľa sa vyskytla chyba“);
} inak {
očakávať (res).to.mať.stav(200);
očakávať (res.body).to.be.an('pole');
}

hotový();
});
});
});

Pokračujte a spustite testovací skript na svojom termináli, aby ste vykonali dva testovacie prípady.

test npm

Ak sa pri vykonávaní testovacích prípadov nevyskytnú žiadne chyby, mali by ste vidieť podobný výstup, ktorý naznačuje, že testy úspešne prešli.

Zlyhania testov môžu nastať z rôznych dôvodov, ako sú problémy so sieťovým pripojením počas požiadaviek HTTP do databázy, chýbajúce požadované údaje, logické chyby a iné problémy.

Mocha robí dobrú prácu pri identifikácii a zvýrazňovaní takýchto chýb a poskytuje jasné a podrobné správy o testoch v protokoloch zobrazených v okne terminálu. To vám umožní ľahko identifikovať a diagnostikovať špecifické problémy, ktoré spôsobili zlyhania testu.

Mocha vám neposkytuje žiadne ospravedlnenie na to, aby ste netestovali svoje rozhrania API

Manuálne testovanie funkčnosti vašich rozhraní API pomocou nástrojov ako Postman je platným testovaním prístup, využívajúci Mocha a ďalšie testovacie rámce pre automatizované testovanie posúva na ďalšiu úroveň úrovni.

Pomocou týchto testovacích nástrojov môžete rýchlo a jednoducho automatizovať testy tak, aby pokryli širokú škálu scenárov a okrajových prípadov. To vám umožní rýchlo odhaliť chyby a vyriešiť ich pred nasadením vašich rozhraní API, čím sa zaistí, že do výroby dodávate vysokokvalitný softvér.