Node.js-taustakehityksen bootcamp · Oppitunti

API-päätepisteiden integraatiotestaus

Toteuttakaa integraatiotestejä eri komponenttien välisen vuorovaikutuksen varmistamiseksi ja API-toiminnallisuuden tarkistamiseksi.

Oppitunti 2/411 vaihetta

API-päätepisteiden integraatiotestaus on ilmainen Node.js-taustakehityksen bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Node.js-taustakehityksen bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Node.js-taustakehityksen bootcamp-kurssilla on yhteensä 4 oppituntia.

Mitä integraatiotestaus on?

Tervetuloa! Tässä oppitunnissa perehdymme Node.js:n API-päätepisteiden integraatiotestaukseen. Yksikkötestit testaavat pieniä, eristettyjä koodin osia, kun taas integraatiotesteillä varmistetaan sovelluksen eri osien toimivan yhdessä odotetulla tavalla.

API-rajapintojen tapauksessa tämä tarkoittaa, että päätepisteet käsittelevät pyynnöt oikein, ovat vuorovaikutuksessa tietokantojen tai muiden palveluiden kanssa ja palauttavat oikeat vastaukset.

Miksi API-päätepisteitä testataan?

API on tärkein tapa, jolla ulkoiset asiakkaat ovat vuorovaikutuksessa taustajärjestelmänne kanssa. Kattavilla integraatiotesteillä varmistetaan seuraavat asiat:

  • Päätepisteet vastaavat oikeilla HTTP-tilakoodeilla.
  • API:lle lähetetyt tiedot käsitellään ja tallennetaan oikein.
  • API palauttaa odotetussa muodossa olevia tietoja, kuten JSON-dataa.
  • Eri komponentit, kuten reititys, middleware ja tietokanta, toimivat saumattomasti yhdessä.

Näin voidaan havaita varhain virheitä, joita yksikkötestit eivät välttämättä löydä.

Keskeiset testaustyökalut

Node.js:n API-päätepisteiden testaamiseen käytämme muutamaa keskeistä työkalua:

  • Jest: Testien suorittaja ja väitekirjasto, johon tutustuttiin oppitunnilla 1.
  • Supertest: HTTP-palvelinten testaamiseen suunniteltu kirjasto. Sen avulla pyyntöjen lähettäminen ja vastausten tarkistaminen on helppoa.
  • Express: Web-kehyksemme, jolla itse API rakennetaan.

Supertestin määrittäminen

Asennetaan ensin tarvittavat paketit. Tarvitsemme express-paketin esimerkki-API:ta varten sekä jest- ja supertest-paketit testaamiseen.

Suorittakaa tämä komento projektinne päätteessä:

npm install --save-dev express jest supertest

Yksinkertainen Express-sovelluksemme

Luodaan perustason Express-sovellus, jota voimme testata. Määritämme muutaman yksinkertaisen reitin.

Huomatkaa, että viemme app-ilmentymän, jota Supertest käyttää pyyntöjen tekemiseen suoraan ilman, että aktiivista palvelinta tarvitsee käynnistää porttiin.

const express = require('express');
const app = express();

// Middleware to parse JSON request bodies
app.use(express.json());

// A simple GET route
app.get('/', (req, res) => {
  res.send('Hello from Express!');
});

// A GET route that returns JSON
app.get('/data', (req, res) => {
  res.json({ message: 'API data', version: 1.0 });
});

// A POST route that echoes the request body
app.post('/echo', (req, res) => {
  res.json(req.body);
});

// Export the app for testing purposes
module.exports = app;

// Start the server only if not in a test environment
if (process.env.NODE_ENV !== 'test') {
  const port = 3000;
  app.listen(port, () => {
    console.log(`Server running on port ${port}`);
  });
}

GET-päätepisteen testaaminen

Kirjoitetaan nyt ensimmäinen integraatiotestimme. Käytämme supertest-pakettia GET-pyynnön tekemiseen juuren /-päätepisteeseen ja sen vastauksen tarkistamiseen.

Luokaa esimerkiksi tiedosto app.test.js ja lisätkää siihen seuraava koodi:

const request = require('supertest');
const app = require('./app'); // Import our Express app

describe('GET /', () => {
  it('should return "Hello from Express!"', async () => {
    const res = await request(app).get('/');
    expect(res.statusCode).toEqual(200);
    expect(res.text).toEqual('Hello from Express!');
  });
});

JSON-vastausten tarkistaminen

API:t palauttavat usein JSON-dataa. Supertestin avulla vastauksen jäsennettyyn JSON-runkoon pääsee helposti käsiksi res.body-ominaisuuden kautta.

Testataan /data-päätepisteemme ja varmistetaan, että se palauttaa oikean JSON-olion:

const request = require('supertest');
const app = require('./app');

describe('GET /data', () => {
  it('should return JSON with message and version', async () => {
    const res = await request(app).get('/data');
    expect(res.statusCode).toEqual(200);
    expect(res.type).toEqual('application/json');
    expect(res.body).toEqual({ message: 'API data', version: 1.0 });
    expect(res.body.message).toBe('API data');
  });
});

POST-pyyntöjen testaaminen

POST-pyyntöjen testaaminen on samankaltaista, mutta käytämme .post()-metodia ja usein myös .send()-metodia pyyntörungon liittämiseen.

/echo-päätepisteemme palauttaa yksinkertaisesti kaiken vastaanottamansa JSON-datan. Testataan tämä toiminnallisuus:

const request = require('supertest');
const app = require('./app');

describe('POST /echo', () => {
  it('should echo the sent JSON data', async () => {
    const testData = { name: 'Coddy', score: 95 };
    const res = await request(app)
      .post('/echo')
      .send(testData);

    expect(res.statusCode).toEqual(200);
    expect(res.type).toEqual('application/json');
    expect(res.body).toEqual(testData);
  });
});

Tietokantayhteydet ja siivous

Kun testaatte tietokannan kanssa toimivia API-rajapintoja, yleensä:

  • Käytätte erillistä testitietokantaa, jotta kehitysympäristön tietoja ei saastuteta.
  • Tyhjennätte tietokannan ennen jokaista testisarjaa tai testitapausta (beforeEach/afterEach-koukkujen avulla).
  • Alustatte tietoja, jos testi tarvitsee tiettyjä tietoja.

Näin testit pysyvät toisistaan riippumattomina ja toistettavina.

API-testiskenaario

Testaatte Node.js:n API-päätepistettä /users, joka hyväksyy POST-pyyntöjä uuden käyttäjän luomista varten. Mitkä seuraavista väitteistä ovat TOSIA tämän päätepisteen integraatiotestauksesta?

Yhteenveto: integraatiotestaus

Hienoa työtä! Olette oppineet Node.js:n API-päätepisteiden integraatiotestauksen perusteet:

  • Mitä se on: Varmistetaan komponenttien toimivan yhdessä, erityisesti API-pyyntöjen yhteydessä.
  • Työkalut: HTTP-pyyntöjen simulointi Supertestillä ja Jestillä.
  • Menetelmä: GET- ja POST-pyyntöjen lähettäminen sekä tilakoodien, rungon sisällön ja tietotyyppien tarkistaminen.
  • Parhaat käytännöt: Erillisten testitietokantojen käyttäminen eristyksen varmistamiseksi.

Näin varmistetaan, että API on vankka ja luotettava!

Aloita maksutta

Opi JavaScript tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
22
Oppitunnit
92

Usein kysytyt kysymykset

Onko oppitunti ”API-päätepisteiden integraatiotestaus” ilmainen?

Kyllä – oppitunnin ”API-päätepisteiden integraatiotestaus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Node.js-taustakehityksen bootcamp-kurssin, päivitä CoddyKit PROhon. Node.js-taustakehityksen bootcamp-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”API-päätepisteiden integraatiotestaus”?

Toteuttakaa integraatiotestejä eri komponenttien välisen vuorovaikutuksen varmistamiseksi ja API-toiminnallisuuden tarkistamiseksi. Harjoittelet Node.js-taustakehityksen bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Node.js-taustakehityksen bootcamp-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Node.js-taustakehityksen bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”API-päätepisteiden integraatiotestaus”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Node.js-taustakehityksen bootcamp-oppitunnilla?

Kyllä. Jokainen Node.js-taustakehityksen bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Yksikkötestaus Jestillä
  2. API-päätepisteiden integraatiotestaus
  3. Tehokkaat virheenkorjaustekniikat
  4. Mockit ja testikaksoisolennot Node.js:ssä
← Takaisin: Node.js-taustakehityksen bootcamp