API priegloba yra atsakinga už tai, kad ji veiktų. Nėra geresnio ar lengvesnio būdo tai padaryti nei automatinis testavimas naudojant tokį įrankį kaip „Mocha“.
Šiuolaikinės programinės įrangos kūrimas puikiai išnaudoja API. Jie tarnauja kaip esminis ryšys tarp kliento programų ir užpakalinių programų, taip pat tarp skirtingų vidinių ar išorinių programų.
API leidžia sklandžiai bendrauti ir keistis duomenimis, todėl programinės įrangos komponentai sklandžiai sąveikauja tarpusavyje. Šių API patikimumo, funkcionalumo ir našumo užtikrinimas yra itin svarbus siekiant užtikrinti sklandžią vartotojo patirtį ir išlaikyti bendrą sistemos vientisumą.
Todėl svarbu kruopščiai išbandyti savo API, kad būtų galima pažymėti ir ištaisyti klaidas kūrimo metu, kad būtų išvengta galimų sistemos gedimų gamybos aplinkoje.
Node.js API testavimas naudojant Mocha, Chai ir Chai-HTTP
Mocha yra plačiai naudojama testavimo sistema, suderinama su įvairiais JavaScript karkasai. Viena iš pagrindinių jo savybių yra lankstus bandymų vykdytojas, kuris supaprastina efektyvaus bandomųjų atvejų valdymo ir vykdymo procesą.
Jis taip pat palaiko įvairius testavimo stilius, įskaitant sinchroninį ir asinchroninį testavimą, leidžiantį atlikti įvairius testavimo scenarijus.
Iš kitos pusės, Chai ir Chai-HTTP yra tvirtinimo bibliotekos, kurias galite naudoti kartu su Mocha. Chai siūlo platų išraiškingų ir skaitomų tvirtinimo sąsajų asortimentą, pavyzdžiui, turėtų, tikėtis ir tvirtinti. Nors Chai-HTTP, Chai plėtinys, suteikia sąsają, specialiai sukurtą HTTP užklausoms tikrinti ir jų atsakymams patvirtinti.
Naudodami Mocha kartu su Chai ir Chai-HTTP, galite efektyviai išbandyti API. Testavimo darbo eiga apima:
- HTTP užklausų teikimas nurodytiems API galutiniams taškams.
- Numatytų atsakymų apibrėžimas.
- Patvirtinti gautus duomenis iš nurodyto šaltinio, HTTP būsenos kodus ir kt.
Taip pat galite imituoti API klaidų bandymo scenarijus, kurie gali atsirasti tokiose situacijose ir kokie veiksmai turėtų būti suaktyvinti, jei jie įvyktų.
Šio projekto kodą galite rasti jame GitHub saugykla.
Nustatykite Express.js projektą ir MongoDB duomenų bazę
Pradėti, sukurti „Express“ žiniatinklio serverįir įdiekite šiuos paketus:
npm įdiegti cors dotenv mongoose mongodb
Kitas, sukurti MongoDB duomenų bazę arba sukonfigūruokite MongoDB klasterį debesyje. Tada nukopijuokite duomenų bazės ryšio URL, sukurkite a .env failą šakniniame kataloge ir įklijuokite į duomenų bazės ryšio eilutę:
CONNECTION_STRING="ryšio eilutė"
Norėdami užbaigti sąrankos procesą, turite sukonfigūruoti duomenų bazės ryšį ir apibrėžti savo vartotojo duomenų duomenų modelius. Peržiūrėkite kodą šio projekto „GitHub“ saugykloje:
- Sukonfigūruokite duomenų bazės ryšį, į utils/db.js.
- Apibrėžkite vartotojo duomenų schemą models/user.model.js.
Apibrėžkite API maršrutų tvarkyklės funkcijas
Valdiklio funkcijos valdys vartotojo duomenų papildymą ir iškvietimą duomenų bazėje. Norėdami užtikrinti šių tvarkyklės funkcijų funkcionalumą, patikrinsite, ar jos gali sėkmingai paskelbti ir gauti duomenis iš duomenų bazės.
Šakniniame kataloge sukurkite a controllers/userControllers.js failą ir pridėkite šį kodą:
konst Vartotojas = reikalauti(„../models/user.model“);
exports.registerUser = async (req, res) => {
konst { vartotojo vardas, slaptažodis } = req.body;bandyti {
laukti User.create({ vartotojo vardas, slaptažodis});
res.status(201).send({ žinutę: „Vartotojas sėkmingai užregistruotas“ });
} sugauti (klaida) {
konsolė.log (klaida);
res.status(500).send({ žinutę: 'Įvyko klaida!! ' });
}
};
exports.getUsers = async (req, res) => {
bandyti {
konst vartotojai = laukti User.find({});
res.json (vartotojai);
} sugauti (klaida) {
konsolė.log (klaida);
res.status(500).send({ žinutę: 'Įvyko klaida!!' });
}
};
Apibrėžkite API maršrutus
Sukurti naują routes/userRoutes.js failą šakniniame kataloge ir pridėkite šį kodą.
konst išreikšti = reikalauti("išreikšti");
konst maršrutizatorius = greitasis. Maršrutizatorius ();
konst userControllers = reikalauti(„../controllers/userControllers“);
router.post('/api/registras', userControllers.registerUser);
router.get(„/api/users“, userControllers.getUsers);
modulis.exports = maršrutizatorius;
Apibrėžkite savo serverio įėjimo tašką
Atnaujinkite savo server.js failą su tokiu kodu.
konst išreikšti = reikalauti("išreikšti");
konst cors = reikalauti("cors");
konst programa = express ();
konst prievadas = 5000;
reikalauti('dotenv'.config();
konst connectDB = reikalauti('./utils/db');connectDB();
app.use (express.json());
app.use (express.urlencoded({ pratęstas: tiesa }));
app.use (cors());konst userRoutes = reikalauti('./routes/userRoutes');
app.use('/', userRoutes);app.listen (port, () => {
konsolė.log(`Serveris klausosi http://localhost:${port}`);
});
modulis.exports = programa;
Parašykite ir vykdykite bandomuosius atvejus su Mocha
Įdiegę vartotojo API, eikite į priekį ir sukonfigūruokite bandymo aplinką. Pirmiausia įdiekite šiuos paketus kaip kūrėjo priklausomybes.
npm įdiegti mocha chai chai-http --save-dev
Dabar pridėkite šį scenarijų prie paketo.json failo.
"scenarijai": {
"bandymas": "mocha -- timeout 10000"
},
Ši komanda vykdys bandomuosius atvejus – pridėjus skirtojo laiko ypatybę su atitinkama reikšme, galėsite valdyti maksimalų laiką, leidžiamą atskiriems bandomiesiems atvejams vykdyti.
Tai gali būti naudinga norint išvengti, kad bandymai būtų vykdomi neribotą laiką arba nebūtų baigti per greitai prieš pasibaigiant bandomiesiems atvejams.
Išbandykite API galutinius taškus
Šakniniame kataloge sukurkite naują aplanką ir pavadinkite jį bandymas. Šiame aplanke sukurkite naują user.tests.js failą ir pridėkite šį POST galutinio taško bandymo atvejo kodą.
konst chai = reikalauti('chai');
konst chaiHttp = reikalauti("chai-http");
konst programa = reikalauti('../serveris');chai.use (chaiHttp);
konst tikėtis = chai.tikėtis;apibūdinti(„Vartotojo API“, () => {
apibūdinti('POST /api/register', () => {
tai („turėtų tvarkyti vartotojo registraciją“, (atlikta) => {
chai.request (programėlė)
.post('/api/registras')
.send({ Vartotojo vardas: „testUser“, Slaptažodis: "bandymo slaptažodis" })
.galas((klaida, ats) => {
jeigu (err) {
tikėtis (res).to.have.status(500);
tikėtis (res.body)to.have.property("žinutė").tai.yra.lygus('Įvyko klaida!!');
} Kitas {
tikėtis (res).to.have.status(201);
tikėtis (res.body)to.have.property("žinutė").lygus(„Vartotojas sėkmingai užregistruotas“);
}
padaryta();
});
});
});
});
Šis kodas apibrėžia bandomąjį atvejį, naudojant Chai ir Chai HTTP, kad būtų patikrintas vartotojo API vartotojo registracijos funkcionalumas.
Jis siunčia POST užklausą nurodytam galutiniam taškui ir pateikia tvirtinimus apie laukiamą API atsakymą, patikrindamas, ar vartotojo registracijos funkcija buvo sėkminga, ar įvyko klaida.
Toliau pateikiamas pagrindinių bandomojo atvejo komponentų suskirstymas:
- tikėtis -Šis objektas leidžia naudoti Chai tvirtinimo metodus, kad pateiktumėte tvirtinimus apie laukiamą atsakymą iš API.
- apibūdinti - Jame kartu aprašomi susiję bandymų atvejai, šiuo atveju testai, susiję su Vartotojo API. Įdėtas aprašymas blokuoja tolesnes grupes, susijusias su bandomaisiais atvejais, šiuo atveju POST /api/register. Tai padeda organizuoti testavimo atvejus, konkrečiai susijusius su tam tikra funkcija.
- tai – Ši funkcija apibūdina numatomą API galutinio taško elgesį.
- galas - Ši funkcija siunčia užklausą ir suteikia atgalinio skambinimo funkciją atsakymui apdoroti. Atgalinio skambinimo funkcija atlieka tvirtinimus naudodama tikėtis funkcija, skirta patikrinti iš API gautą atsakymą.
- padaryta - Ši funkcija paleidžiama norint pažymėti bandomojo atvejo pabaigą.
Galiausiai pridėkite GET galutinio taško bandymo atvejo kodą iškart po POST galutinio taško bandymo atvejo.
apibūdinti(„GAUTI /api/users“, () => {
tai („turėtų gauti visus vartotojo duomenis“, (atlikta) => {
chai.request (programėlė)
.get(„/api/users“)
.galas((klaida, ats) => {
jeigu (err) {
tikėtis (res).to.have.status(500);
tikėtis (res.body)to.have.property("žinutė").tai.yra.lygus(„Gaunant vartotojo duomenis įvyko klaida“);
} Kitas {
tikėtis (res).to.have.status(200);
tikėtis (res.body).to.be.an('masyvas');
}
padaryta();
});
});
});
Eikite į priekį ir paleiskite bandomąjį scenarijų savo terminale, kad atliktumėte du bandomuosius atvejus.
npm testas
Jei vykdant bandomuosius atvejus neaptinkama jokių klaidų, turėtumėte matyti panašią išvestį, rodančią, kad testai buvo sėkmingai atlikti.
Bandymo gedimai gali atsirasti dėl įvairių priežasčių, pvz., tinklo ryšio problemų, kai HTTP užklausos į duomenų bazę siunčiamos, trūksta būtinų duomenų, loginės klaidos ir kitos problemos.
Mocha atlieka gerą darbą nustatydama ir išryškindama tokias klaidas, pateikdama aiškias ir išsamias bandymų ataskaitas terminalo lange rodomuose žurnaluose. Tai leidžia lengvai nustatyti ir diagnozuoti konkrečias problemas, dėl kurių nepavyko atlikti bandymo.
Mocha nesuteikia jokio pasiteisinimo neišbandyti savo API
Neautomatinis API funkcionalumo testavimas naudojant tokius įrankius kaip „Postman“ yra tinkamas bandymas metodą, naudojant Mocha ir kitas testavimo sistemas automatizuotam testavimui, jis pereina į kitą lygiu.
Naudodami šiuos testavimo įrankius galite greitai ir lengvai automatizuoti testus, kad apimtų įvairius scenarijus ir kraštutinius atvejus. Tai leidžia greitai aptikti klaidas ir jas pašalinti prieš diegiant API, užtikrinant aukštos kokybės programinės įrangos pristatymą į gamybą.