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

instagram viewer
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.