Az API üzemeltetése felelősséggel tartozik annak működéséért. Nincs jobb vagy egyszerűbb módja ennek, mint az automatizált tesztelés egy olyan eszközzel, mint a Mocha.
A modern szoftverfejlesztés nagymértékben kihasználja az API-kat. Alapvető kapcsolatként szolgálnak az ügyféloldali alkalmazások és a háttéralkalmazások, valamint a különböző belső és külső alkalmazások között.
Az API-k zökkenőmentes kommunikációt és adatcserét tesznek lehetővé, lehetővé téve a szoftverkomponensek zökkenőmentes interakcióját egymással. Ezen API-k megbízhatóságának, funkcionalitásának és teljesítményének biztosítása rendkívül fontos a zökkenőmentes felhasználói élmény biztosításához és a rendszer általános integritásának fenntartásához.
Ezért fontos, hogy alaposan tesztelje az API-kat, hogy megjelölje és kijavítsa a hibákat a fejlesztés során, hogy megelőzze a lehetséges rendszerhibákat az éles környezetben.
Node.js API-k tesztelése Mocha, Chai és Chai-HTTP használatával
Mohaachát egy széles körben használt tesztelési keretrendszer, amely kompatibilis különféle
JavaScript keretrendszerek. Az egyik legfontosabb jellemzője a rugalmas tesztfutó, amely leegyszerűsíti a tesztesetek kezelésének és végrehajtásának folyamatát.Különféle tesztelési stílusokat is támogat, beleértve a szinkron és aszinkron tesztelést, lehetővé téve a tesztelési forgatókönyvek széles skáláját.
Másrészről, Chai és Chai-HTTP olyan állítási könyvtárak, amelyeket a Mocha-val együtt használhat. A Chai kifejező és olvasható állítási felületek széles skáláját kínálja, mint például a kell, az elvárás és az állítás. Míg a Chai-HTTP, a Chai kiterjesztése, kifejezetten a HTTP kérések tesztelésére és válaszaik érvényesítésére tervezett felületet biztosít.
A Mocha Chai és Chai-HTTP együttes használatával hatékonyan tesztelheti az API-kat. A tesztelési munkafolyamat a következőket tartalmazza:
- HTTP-kérések a megadott API-végpontokhoz.
- A várt válaszok meghatározása.
- A megadott forrásból kapott adatok, a HTTP állapotkódok és egyebek ellenőrzése.
Simulálhat olyan API-hibateszt-forgatókönyveket is, amelyek ilyen helyzetekben előfordulhatnak, és milyen műveleteket kell végrehajtani, ha előfordulnak.
A projekt kódja megtalálható benne GitHub adattár.
Állítsa be az Express.js projektet és a MongoDB adatbázist
A kezdéshez hozzon létre egy Express webszervert, és telepítse ezeket a csomagokat:
npm install cors dotenv mongoose mongodb
Következő, Hozzon létre egy MongoDB adatbázist vagy konfiguráljon egy MongoDB-fürtöt a felhőben. Ezután másolja ki az adatbázis-kapcsolat URL-címét, hozzon létre a .env fájlt a gyökérkönyvtárba, és illessze be az adatbázis kapcsolati karakterláncába:
CONNECTION_STRING="kapcsolati karakterlánc"
A beállítási folyamat befejezéséhez konfigurálnia kell az adatbázis-kapcsolatot, és meg kell határoznia a felhasználói adatok adatmodelljeit. Tekintse meg a projekt GitHub-tárában található kódot:
- Állítsa be az adatbázis-kapcsolatot utils/db.js.
- Határozza meg a felhasználói adatsémát models/user.model.js.
Határozza meg az API-útvonalak kezelői függvényeit
A vezérlő funkciók kezelik a felhasználói adatok hozzáadását és visszakeresését az adatbázisban. A kezelőfunkciók működőképességének biztosítása érdekében tesztelni kell, hogy sikeresen el tudják-e küldeni és lekérni az adatokat az adatbázisból.
A gyökérkönyvtárban hozzon létre a controllers/userControllers.js fájlt, és adja hozzá a következő kódot:
const Felhasználó = igényelnek("../models/user.model");
exports.registerUser = async (req, res) => {
const { felhasználónév, jelszó } = req.body;próbáld ki {
várja User.create({ felhasználónév, jelszó});
res.status(201).Küld({ üzenet: "Felhasználó sikeresen regisztrálva" });
} fogás (hiba) {
konzol.log (hiba);
res.status(500).Küld({ üzenet: 'Hiba lépett fel!! ' });
}
};
exports.getUsers = async (req, res) => {
próbáld ki {
const felhasználók = várja User.find({});
res.json (felhasználók);
} fogás (hiba) {
konzol.log (hiba);
res.status(500).Küld({ üzenet: 'Hiba lépett fel!!' });
}
};
Határozza meg az API-útvonalakat
Újat csinálni routes/userRoutes.js fájlt a gyökérkönyvtárba, és adja hozzá a következő kódot.
const expressz = igényelnek('Expressz');
const router = expressz. Router();
const userControllers = igényelnek("../controllers/userControllers");
router.post('/api/regiszter', userControllers.registerUser);
router.get('/api/felhasználók', userControllers.getUsers);
modult.exports = útválasztó;
Határozza meg a kiszolgáló belépési pontját
Frissítse a server.js fájl a következő kóddal.
const expressz = igényelnek('Expressz');
const cors = igényelnek("cors");
const app = express();
const port = 5000;
igényelnek("dotenv").config();
const connectDB = igényelnek('./utils/db');connectDB();
app.use (express.json());
app.use (express.urlencoded({ kiterjedt: igaz }));
app.use (cors());const userRoutes = igényelnek('./routes/userRoutes');
app.use('/', userRoutes);app.listen (port, () => {
konzol.log(`Szerver figyel itt http://localhost:${port}`);
});
modult.exports = alkalmazás;
Írjon és hajtson végre teszteseteket mokkával
Ha a felhasználói API a helyén van, folytassa és konfigurálja a tesztkörnyezetet. Először telepítse ezeket a csomagokat fejlesztői függőségekként.
npm telepítése mocha chai chai-http --save-dev
Most adja hozzá a következő szkriptet a package.json fájlhoz.
"szkriptek": {
"teszt": "mocha -- timeout 10000"
},
Ez a parancs végrehajtja a teszteseteket – az időtúllépési tulajdonság megfelelő értékkel történő hozzáadása lehetővé teszi az egyes tesztesetek végrehajtásának maximális időtartamának szabályozását.
Ez hasznos lehet annak megakadályozására, hogy a tesztek korlátlan ideig fussanak, vagy túl gyorsan fejeződjenek be, mielőtt a tesztesetek befejeződnének.
Tesztelje az API-végpontokat
A gyökérkönyvtárban hozzon létre egy új mappát, és nevezze el teszt. Ebben a mappában hozzon létre egy újat user.tests.js fájlt, és adja hozzá a következő kódot a POST végpont tesztesethez.
const chai = igényelnek('chai');
const chaiHttp = igényelnek("chai-http");
const app = igényelnek('../szerver');chai.use (chaiHttp);
const várni = chai.expect;leír("Felhasználói API", () => {
leír('POST /api/register', () => {
azt("kezelnie kell a felhasználói regisztrációt", (kész) => {
chai.request (alkalmazás)
.post('/api/regiszter')
.Küld({ felhasználónév: "testUser", Jelszó: "tesztjelszó" })
.end((hiba, res) => {
ha (hiba) {
elvár (res).to.have.status(500);
elvár (res.body).to.have.property('üzenet').this.is.equal('Hiba lépett fel!!');
} más {
elvár (res).to.have.status(201);
elvár (res.body).to.have.property('üzenet').egyenlő("Felhasználó sikeresen regisztrálva");
}
Kész();
});
});
});
});
Ez a kód egy tesztesetet határoz meg Chai és Chai HTTP használatával a felhasználói API felhasználói regisztrációs funkcióinak tesztelésére.
POST kérést küld a megadott végpontnak, és állításokat tesz a várt API-válaszra vonatkozóan, ellenőrzi, hogy a felhasználói regisztráció funkció sikeres volt-e, vagy hiba történt-e.
Íme a teszteset fő összetevőinek lebontása:
- elvárják -Ez az objektum lehetővé teszi a Chai állítási metódusok használatát az API-tól várt válaszra vonatkozó állításokhoz.
- leírni - Együtt írja le a kapcsolódó teszteseteket, jelen esetben a kapcsolódó teszteket Felhasználói API. A beágyazott leírási blokk további csoportokat csoportosít össze a kapcsolódó tesztesetekkel, ebben az esetben a POST /api/register. Ez segít az adott funkcióhoz kifejezetten kapcsolódó tesztesetek rendszerezésében.
- azt - Ez a függvény az API-végpont várható viselkedését írja le.
- vége - Ez a funkció elküldi a kérést, és visszahívási funkciót biztosít a válasz kezelésére. A visszahívási funkció állításokat hajt végre a elvárják funkciót az API-tól kapott válasz ellenőrzéséhez.
- Kész - Ez a funkció a teszteset végét jelzi.
Végül adja hozzá a GET végpont teszteset kódját közvetlenül a POST végpont teszteset után.
leír('GET /api/users', () => {
azt("minden felhasználói adatot le kell kérni", (kész) => {
chai.request (alkalmazás)
.kap('/api/felhasználók')
.end((hiba, res) => {
ha (hiba) {
elvár (res).to.have.status(500);
elvár (res.body).to.have.property('üzenet').this.is.equal("Hiba történt a felhasználói adatok lekérése közben");
} más {
elvár (res).to.have.status(200);
elvár (res.body).to.be.an('sor');
}
Kész();
});
});
});
Menjen előre, és futtassa a tesztszkriptet a terminálon a két teszteset végrehajtásához.
npm teszt
Ha a tesztesetek végrehajtása nem tapasztal hibát, akkor hasonló kimenetet kell látnia, amely jelzi, hogy a tesztek sikeresek voltak.
A tesztelési hibák különböző okok miatt fordulhatnak elő, például hálózati csatlakozási problémák az adatbázishoz intézett HTTP-kérések során, hiányzó szükséges adatok, logikai hibák és egyéb problémák.
A Mocha jó munkát végez az ilyen hibák azonosításában és kiemelésében, világos és részletes tesztjelentéseket ad a terminál ablakában megjelenő naplókban. Ez lehetővé teszi a teszt sikertelenségét okozó konkrét problémák egyszerű azonosítását és diagnosztizálását.
A Mocha nem ad ürügyet arra, hogy ne tesztelje API-jait
Míg az API-k működésének kézi tesztelése olyan eszközökkel, mint a Postman, érvényes tesztelés megközelítés, a Mocha és más tesztelési keretrendszerek kihasználása az automatizált teszteléshez a következő szintre viszi szint.
Ezekkel a tesztelőeszközökkel gyorsan és egyszerűen automatizálhatja a teszteket, hogy lefedje a forgatókönyvek és szélsőséges esetek széles körét. Ez lehetővé teszi a hibák gyors észlelését és kijavítását az API-k telepítése előtt, így biztosítva, hogy kiváló minőségű szoftvereket szállítson a termelésbe.