Hostování API nese odpovědnost za to, že funguje. Neexistuje lepší nebo jednodušší způsob, jak toho dosáhnout, než automatizované testování pomocí nástroje, jako je Mocha.

Moderní vývoj softwaru skvěle využívá API. Slouží jako zásadní spojení mezi aplikacemi na straně klienta a backendovými aplikacemi, stejně jako mezi různými interními nebo externími aplikacemi.

Rozhraní API umožňují bezproblémovou komunikaci a výměnu dat a umožňují softwarovým komponentům bezproblémovou vzájemnou interakci. Zajištění spolehlivosti, funkčnosti a výkonu těchto rozhraní API je nanejvýš důležité pro zajištění bezproblémové uživatelské zkušenosti a zachování celkové integrity systému.

Je proto důležité důkladně otestovat vaše API, abyste označili a opravili chyby během vývoje, abyste předešli potenciálním selháním systému v produkčním prostředí.

Testování Node.js API pomocí Mocha, Chai a Chai-HTTP

Moka je široce používaný testovací rámec, který je kompatibilní s různými JavaScriptové rámce. Jednou z jeho klíčových vlastností je flexibilní testovací běh, který zjednodušuje proces efektivní správy a provádění testovacích případů.

instagram viewer

Podporuje také různé styly testování, včetně synchronního a asynchronního testování, což umožňuje širokou škálu testovacích scénářů.

Na druhou stranu, Chai a Chai-HTTP jsou knihovny asercí, které můžete použít ve spojení s Mocha. Chai poskytuje širokou škálu expresivních a čitelných rozhraní pro tvrzení, jako by měl, očekávat a prosadit. Zatímco Chai-HTTP, rozšíření Chai, poskytuje rozhraní speciálně navržené pro testování HTTP požadavků a prosazování jejich odpovědí.

Použitím Mocha ve spojení s Chai a Chai-HTTP můžete efektivně testovat API. Pracovní postup testování zahrnuje:

  • Vytváření požadavků HTTP na zadané koncové body API.
  • Definování očekávaných reakcí.
  • Ověření přijatých dat ze zadaného zdroje, stavové kódy HTTP a další.

Můžete také simulovat scénáře testu chyb API, které mohou v takových situacích nastat, a jaké akce by se měly spustit v případě, že nastanou.

Kód tohoto projektu najdete v něm úložiště GitHub.

Nastavte projekt Express.js a databázi MongoDB

Začít, vytvořit expresní webový servera nainstalujte tyto balíčky:

npm install cors dotenv mongoose mongodb

Další, vytvořit databázi MongoDB nebo nakonfigurujte cluster MongoDB v cloudu. Poté zkopírujte adresu URL připojení k databázi, vytvořte a .env soubor v kořenovém adresáři a vložte do databázového připojovacího řetězce:

CONNECTION_STRING="připojovací řetězec"

Chcete-li dokončit proces nastavení, musíte nakonfigurovat připojení k databázi a definovat datové modely pro vaše uživatelská data. Podívejte se na kód v úložišti GitHub tohoto projektu:

  • Nakonfigurujte připojení k databázi, v utils/db.js.
  • Definujte schéma uživatelských dat v models/user.model.js.

Definujte funkce manipulátoru pro trasy API

Funkce regulátoru budou řídit přidávání a získávání uživatelských dat v databázi. Chcete-li zajistit funkčnost těchto funkcí obsluhy, otestujete, zda mohou úspěšně odesílat a načítat data z databáze.

V kořenovém adresáři vytvořte a controllers/userControllers.js soubor a přidejte následující kód:

konst Uživatel = vyžadovat('../models/user.model');

exports.registerUser = asynchronní (req, res) => {
konst { uživatelské jméno, heslo } = req.body;

Snaž se {
čekat User.create({ uživatelské jméno, heslo});
res.status(201).poslat({ zpráva: 'Uživatel byl úspěšně zaregistrován' });
} chytit (chyba) {
řídicí panel.log (chyba);
res.status(500).poslat({ zpráva: 'Vyskytla se chyba!! ' });
}
};

exports.getUsers = asynchronní (req, res) => {
Snaž se {
konst uživatelé = čekat User.find({});
res.json (uživatelé);
} chytit (chyba) {
řídicí panel.log (chyba);
res.status(500).poslat({ zpráva: 'Vyskytla se chyba!!' });
}
};

Definujte trasy API

Vytvoř nový routes/userRoutes.js soubor v kořenovém adresáři a přidejte následující kód.

konst vyjádřit = vyžadovat('vyjádřit');
konst router = expres. Router();
konst userControllers = vyžadovat('../controllers/userControllers');

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

Definujte svůj vstupní bod serveru

Aktualizujte svůj server.js soubor s následujícím kódem.

konst vyjádřit = vyžadovat('vyjádřit');
konst kors = vyžadovat('cors');
konst app = express();
konst přístav = 5000;
vyžadovat('dotenv').config();
konst connectDB = vyžadovat('./utils/db');

connectDB();

app.use (express.json());
app.use (express.urlencoded({ prodloužený: skutečný }));
app.use (cors());

konst userRoutes = vyžadovat('./routes/userRoutes');
app.use('/', userRoutes);

app.listen (port, () => {
řídicí panel.log(`Server poslouchá na http://localhost:${port}`);
});

modul.export = aplikace;

Napište a proveďte testovací případy pomocí Mocha

S nainstalovaným uživatelským rozhraním API pokračujte a nakonfigurujte testovací prostředí. Nejprve nainstalujte tyto balíčky jako závislosti pro vývoj.

npm nainstalovat mocha chai chai-http --save-dev

Nyní přidejte následující skript do souboru package.json.

"skripty": {
"test": "mocha – časový limit 10 000"
},

Tento příkaz provede testovací případy – přidání vlastnosti timeout s příslušnou hodnotou vám umožní řídit maximální čas povolený pro provedení jednotlivých testovacích případů.

To může být užitečné pro zabránění běhu testů donekonečna nebo příliš rychlému dokončení před dokončením testovacích případů.

Otestujte koncové body API

V kořenovém adresáři vytvořte novou složku a pojmenujte ji test. V této složce vytvořte nový user.tests.js a přidejte následující kód pro testovací případ koncového bodu POST.

konst chai = vyžadovat('chai');
konst chaiHttp = vyžadovat('chai-http');
konst aplikace = vyžadovat('../server');

chai.use (chaiHttp);
konst očekávat = chai.očekávat;

popsat('User API', () => {
popsat('POST /api/register', () => {
to('měl by zvládnout registraci uživatele', (hotovo) => {
chai.request (aplikace)
.pošta('/api/register')
.poslat({ uživatelské jméno: 'testUser', Heslo: 'testpassword' })
.konec((chyba, res) => {
-li (chyba) {
očekávat (res).to.have.status(500);
očekávat (res.body).to.mít.vlastnictví('zpráva').to.je.rovné('Vyskytla se chyba!!');
} jiný {
očekávat (res).to.have.status(201);
očekávat (res.body).to.mít.vlastnictví('zpráva').rovnat se('Uživatel byl úspěšně zaregistrován');
}

Hotovo();
});
});
});
});

Tento kód definuje testovací případ pomocí Chai a Chai HTTP k testování funkce registrace uživatele uživatelského rozhraní API.

Odešle požadavek POST do zadaného koncového bodu a provede potvrzení o očekávané odpovědi rozhraní API a ověří, zda byla funkce registrace uživatele úspěšná nebo zda došlo k chybě.

Zde je rozpis hlavních součástí testovacího případu:

  • očekávat -Tento objekt vám umožňuje používat metody tvrzení Chai k vytváření tvrzení o očekávané odpovědi z API.
  • popsat - Popisuje související testovací případy společně, v tomto případě testy související s Uživatelské rozhraní API. Vnořený popis blokuje další skupiny souvisejících testovacích případů dohromady, v tomto případě POST /api/register. To pomáhá organizovat testovací případy specificky související s konkrétní funkcí.
  • to - Tato funkce popisuje očekávané chování koncového bodu API.
  • konec - Tato funkce odešle požadavek a poskytuje funkci zpětného volání pro zpracování odpovědi. Funkce zpětného volání provádí aserce pomocí očekávat funkce pro kontrolu odpovědi přijaté z API.
  • Hotovo - Tato funkce se spustí, aby označila konec testovacího případu.

Nakonec přidejte kód pro testovací případ koncového bodu GET hned za testovací případ koncového bodu POST.

popsat('GET /api/users', () => {
to('should fetch all user data', (hotovo) => {
chai.request (aplikace)
.dostat('/api/users')
.konec((chyba, res) => {
-li (chyba) {
očekávat (res).to.have.status(500);
očekávat (res.body).to.mít.vlastnictví('zpráva').to.je.rovné("Při načítání uživatelských dat došlo k chybě");
} jiný {
očekávat (res).to.have.status(200);
očekávat (res.body).to.be.an('array');
}

Hotovo();
});
});
});

Pokračujte a spusťte testovací skript na svém terminálu, abyste provedli dva testovací případy.

test npm

Pokud při provádění testovacích případů nenarazíte na žádné chyby, měli byste vidět podobný výstup indikující, že testy prošly úspěšně.

Selhání testu může nastat z různých důvodů, jako jsou problémy s připojením k síti během požadavků HTTP na databázi, chybějící požadovaná data, logické chyby a další problémy.

Mocha odvádí dobrou práci při identifikaci a zvýrazňování takových chyb a poskytuje jasné a podrobné testovací zprávy v protokolech zobrazených v okně terminálu. To vám umožní snadno identifikovat a diagnostikovat konkrétní problémy, které způsobily selhání testu.

Mocha vám nedá žádnou omluvu, abyste netestovali vaše API

Ruční testování funkčnosti vašich API pomocí nástrojů jako Postman je validní testování přístup využívající Mocha a další testovací rámce pro automatizované testování posouvá na další úroveň úroveň.

Pomocí těchto testovacích nástrojů můžete rychle a snadno automatizovat testy tak, aby pokryly širokou škálu scénářů a okrajových případů. To vám umožní rychle odhalit chyby a vyřešit je před nasazením vašich API, což vám zajistí, že budete dodávat vysoce kvalitní software do výroby.