API: n ylläpito on vastuussa sen toimivuudesta. Ei ole parempaa tai helpompaa tapaa tehdä tämä kuin automaattinen testaus Mochan kaltaisella työkalulla.

Nykyaikainen ohjelmistokehitys hyödyntää paljon API: ita. Ne toimivat tärkeänä linkkinä asiakaspuolen sovellusten ja taustasovellusten välillä sekä erilaisten sisäisten tai ulkoisten sovellusten välillä.

API: t mahdollistavat sujuvan viestinnän ja tiedonvaihdon, jolloin ohjelmistokomponentit voivat olla saumattomasti vuorovaikutuksessa toistensa kanssa. Näiden sovellusliittymien luotettavuuden, toiminnallisuuden ja suorituskyvyn varmistaminen on erittäin tärkeää saumattoman käyttökokemuksen tarjoamiseksi ja järjestelmän yleisen eheyden ylläpitämiseksi.

Siksi on tärkeää testata sovellusliittymäsi perusteellisesti virheiden ilmoittamiseksi ja korjaamiseksi kehityksen aikana, jotta voidaan estää mahdolliset järjestelmävirheet tuotantoympäristöissä.

Node.js-sovellusliittymien testaus Mocha-, Chai- ja Chai-HTTP: n avulla

Mokka on laajalti käytetty testauskehys, joka on yhteensopiva useiden

JavaScript-kehykset. Yksi sen tärkeimmistä ominaisuuksista on joustava testiajo, joka yksinkertaistaa testitapausten hallintaa ja suorittamista tehokkaasti.

Se tukee myös erilaisia ​​testaustyylejä, mukaan lukien synkroninen ja asynkroninen testaus, mikä mahdollistaa laajan valikoiman testausskenaarioita.

Toisaalta, Chai ja Chai-HTTP ovat väitekirjastoja, joita voit käyttää Mochan kanssa. Chai tarjoaa laajan valikoiman ilmeikkäitä ja luettavia väittämisrajapintoja, kuten pitäisi, odottaa ja väittää. Vaikka Chai-HTTP, Chain laajennus, tarjoaa käyttöliittymän, joka on erityisesti suunniteltu HTTP-pyyntöjen testaamiseen ja niiden vastausten vahvistamiseen.

Käyttämällä Mochaa yhdessä Chain ja Chai-HTTP: n kanssa voit testata API: ita tehokkaasti. Testaustyönkulkuun kuuluu:

  • HTTP-pyyntöjen tekeminen määritettyihin API-päätepisteisiin.
  • Odotettujen vastausten määrittäminen.
  • Vahvistetaan määritetystä lähteestä vastaanotettu data, HTTP-tilakoodit ja paljon muuta.

Voit myös simuloida API-virhetesti skenaarioita, joita voi syntyä tällaisissa tilanteissa ja mitä toimia tulisi käynnistää, jos ne tapahtuvat.

Löydät tämän projektin koodin siitä GitHub-arkisto.

Määritä Express.js-projekti ja MongoDB-tietokanta

Aloita luo Express-verkkopalvelinja asenna nämä paketit:

npm asenna cors dotenv mongoose mongodb

Seuraava, luo MongoDB-tietokanta tai määritä MongoDB-klusteri pilveen. Kopioi sitten tietokantayhteyden URL-osoite ja luo a .env tiedosto juurihakemistoon ja liitä tietokannan yhteysmerkkijonoon:

CONNECTION_STRING="yhteysmerkkijono"

Asennusprosessin viimeistelemiseksi sinun on määritettävä tietokantayhteys ja määritettävä tietomallit käyttäjätiedoillesi. Katso tämän projektin GitHub-arkistossa olevaa koodia:

  • Määritä tietokantayhteys, sisään utils/db.js.
  • Määritä käyttäjätietoskeema models/user.model.js.

Määritä käsittelijän toiminnot API-reiteille

Ohjaintoiminnot hallitsevat käyttäjätietojen lisäämistä ja hakua tietokantaan. Näiden käsittelijätoimintojen toimivuuden varmistamiseksi testaat, pystyvätkö ne lähettämään ja hakemaan tietoja tietokannasta onnistuneesti.

Luo juurihakemistoon a controllers/userControllers.js tiedosto ja lisää seuraava koodi:

konst Käyttäjä = vaatia('../models/user.model');

exports.registerUser = asynk (req, res) => {
konst { käyttäjätunnus, salasana } = req.body;

yrittää {
odottaa User.create({ käyttäjätunnus, salasana});
res.status(201).lähettää({ viesti: "Käyttäjä rekisteröity onnistuneesti" });
} ottaa kiinni (virhe) {
konsoli.log (virhe);
res.status(500).lähettää({ viesti: 'Tapahtui virhe!! ' });
}
};

exports.getUsers = asynk (req, res) => {
yrittää {
konst käyttäjät = odottaa User.find({});
res.json (käyttäjät);
} ottaa kiinni (virhe) {
konsoli.log (virhe);
res.status(500).lähettää({ viesti: 'Tapahtui virhe!!' });
}
};

Määritä API-reitit

Luoda uusi routes/userRoutes.js tiedosto juurihakemistoon ja lisää seuraava koodi.

konst express = vaatia('ilmaista');
konst reititin = express. Reititin();
konst userControllers = vaatia('../controllers/userControllers');

router.post('/api/register', userControllers.registerUser);
router.get('/api/käyttäjät', userControllers.getUsers);
moduuli.exports = reititin;

Määritä palvelimesi sisääntulokohta

Päivitä omasi server.js tiedosto seuraavalla koodilla.

konst express = vaatia('ilmaista');
konst cors = vaatia("cors");
konst sovellus = express();
konst portti = 5000;
vaatia('dotenv').config();
konst connectDB = vaatia('./utils/db');

connectDB();

app.use (express.json());
app.use (express.urlencoded({ laajennettu: totta }));
app.use (cors());

konst userRoutes = vaatia('./routes/userRoutes');
app.use('/', userRoutes);

app.listen (portti, () => {
konsoli.Hirsi(`Palvelin kuuntelee klo http://localhost:${port}`);
});

moduuli.exports = sovellus;

Kirjoita ja suorita testitapaukset Mochalla

Kun käyttäjän API on paikallaan, määritä testiympäristö. Asenna ensin nämä paketit kehittäjäriippuvuuksina.

npm asenna mocha chai chai-http --save-dev

Lisää nyt seuraava komentosarja package.json-tiedostoosi.

"käsikirjoitukset": {
"testata": "mocha -- timeout 10000"
},

Tämä komento suorittaa testitapaukset – lisäämällä aikakatkaisuominaisuuden sopivalla arvolla voit hallita yksittäisten testitapausten enimmäisaikaa.

Tämä voi olla hyödyllistä, jos haluat estää testien suorittamisen toistaiseksi tai valmistumasta liian nopeasti ennen kuin testitapaukset ovat päättyneet.

Testaa API-päätepisteitä

Luo juurihakemistoon uusi kansio ja anna sille nimi testata. Luo tämän kansion sisällä uusi user.tests.js tiedosto ja lisää seuraava koodi POST-päätepisteen testitapaukselle.

konst chai = vaatia('chai');
konst chaiHttp = vaatia("chai-http");
konst sovellus = vaatia('../palvelin');

chai.use (chaiHttp);
konst odottaa = chai.expect;

kuvaile ("Käyttäjän sovellusliittymä", () => {
kuvaile ('LÄHETÄ /api/register', () => {
se("pitäisi käsitellä käyttäjän rekisteröinti", (tehty) => {
chai.request (sovellus)
.lähettää('/api/register')
.lähettää({ käyttäjätunnus: 'testUser', Salasana: 'testpassword' })
.end((err, res) => {
jos (err) {
odottaa (res).to.have.status(500);
odottaa (res.body).on.have.property('viesti').et.is.equal('Tapahtui virhe!!');
} muu {
odottaa (res).to.have.status(201);
odottaa (res.body).on.have.property('viesti').yhtä suuri("Käyttäjä rekisteröity onnistuneesti");
}

tehty();
});
});
});
});

Tämä koodi määrittelee testitapauksen, jossa käytetään Chai- ja Chai HTTP -protokollaa käyttäjän API: n käyttäjän rekisteröintitoiminnallisuuden testaamiseen.

Se lähettää POST-pyynnön määritettyyn päätepisteeseen ja tekee väitteitä odotetusta API-vastauksesta ja tarkistaa, onnistuiko käyttäjän rekisteröintitoiminto vai tapahtuiko virhe.

Tässä on erittely testitapauksen pääkomponenteista:

  • odottaa - Tämän objektin avulla voit käyttää Chai-vahvistusmenetelmiä väitteiden tekemiseen API: lta odotetusta vastauksesta.
  • kuvata - Se kuvaa toisiinsa liittyviä testitapauksia yhdessä, tässä tapauksessa testiin liittyviä testejä Käyttäjän API. Sisäkkäinen kuvauslohko ryhmittelee yhteen liittyvät testitapaukset, tässä tapauksessa POST /api/register. Tämä auttaa järjestämään tiettyyn toimintoon liittyvät testitapaukset.
  • se - Tämä funktio kuvaa API-päätepisteen odotetun toiminnan.
  • loppu - Tämä toiminto lähettää pyynnön ja tarjoaa takaisinsoittotoiminnon vastauksen käsittelemiseksi. Takaisinsoittotoiminto suorittaa väitteitä käyttämällä odottaa toiminto tarkistaaksesi API: lta saadun vastauksen.
  • tehty - Tämä toiminto suoritetaan merkitsemään testitapauksen loppua.

Lisää lopuksi GET-päätepisteen testitapauksen koodi heti POST-päätepisteen testitapauksen jälkeen.

kuvaile ('GET /api/users', () => {
se("pitäisi hakea kaikki käyttäjätiedot", (tehty) => {
chai.request (sovellus)
.saada('/api/käyttäjät')
.end((err, res) => {
jos (err) {
odottaa (res).to.have.status(500);
odottaa (res.body).on.have.property('viesti').et.is.equal("Tapahtui virhe haettaessa käyttäjätietoja");
} muu {
odottaa (res).to.have.status(200);
odottaa (res.body).to.be.an("joukko");
}

tehty();
});
});
});

Suorita kaksi testitapausta suorittamalla testiskripti päätteelläsi.

npm testi

Jos testitapausten suorittamisessa ei esiinny virheitä, sinun pitäisi nähdä samanlainen tulos, joka osoittaa, että testit läpäisivät onnistuneesti.

Testausvirheitä voi johtua useista syistä, kuten verkkoyhteysongelmista HTTP-pyyntöjen aikana tietokantaan, puuttuvista vaadituista tiedoista, loogisista virheistä ja muista ongelmista.

Mocha tekee hyvää työtä tällaisten virheiden tunnistamisessa ja korostamisessa tarjoamalla selkeät ja yksityiskohtaiset testiraportit pääteikkunassa näkyvissä lokeissa. Tämän avulla voit helposti tunnistaa ja diagnosoida erityiset ongelmat, jotka aiheuttivat testin epäonnistumisen.

Mocha ei anna sinulle mitään tekosyytä olla testaamatta sovellusliittymiäsi

Sovellusliitostesi toimivuuden manuaalinen testaus Postmanin kaltaisilla työkaluilla on kelvollinen testaus lähestymistapaa, Mochan ja muiden testauskehysten hyödyntäminen automatisoituun testaukseen vie sen seuraavaan taso.

Näiden testaustyökalujen avulla voit nopeasti ja helposti automatisoida testit kattamaan laajan valikoiman skenaarioita ja reunatapauksia. Näin voit nopeasti havaita vikoja ja ratkaista ne ennen sovellusliittymien käyttöönottoa, mikä varmistaa korkealaatuisten ohjelmistojen toimituksen tuotantoon.