Bootcamp i backendudvikling med Node.js · Lektion

Integrationstest af API-endepunkter

Implementér integrationstests for at kontrollere samspillet mellem forskellige komponenter og sikre API-funktionaliteten.

Lektion 2 af 411 trin

Integrationstest af API-endepunkter er en gratis Bootcamp i backendudvikling med Node.js-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Bootcamp i backendudvikling med Node.js, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.

Hvad er integrationstest?

Velkommen! I denne lektion dykker vi ned i integrationstest af Node.js-API-endepunkter. I modsætning til enhedstest (som tester små, isolerede dele af kode) kontrollerer integrationstest, at forskellige dele af din applikation fungerer sammen som forventet.

For API'er betyder det, at du sikrer, at dine endepunkter håndterer anmodninger korrekt, kommunikerer med databaser eller andre tjenester og returnerer de rigtige svar.

Hvorfor teste API-endepunkter?

Dit API er den primære måde, eksterne klienter interagerer med din backend på. Robuste integrationstest sikrer, at:

  • Endepunkter svarer med de korrekte HTTP-statuskoder.
  • Data, der sendes til API'et, behandles og gemmes korrekt.
  • API'et returnerer de forventede dataformater (f.eks. JSON).
  • Forskellige komponenter (som routing, middleware og database) integreres problemfrit.

Det hjælper med at finde fejl tidligt, som enhedstest måske ikke opdager.

Vigtige testværktøjer

Til at teste vores Node.js-API-endepunkter bruger vi et par vigtige værktøjer:

  • Jest: Vores testkører og bibliotek til påstande (introduceret i lektion 1).
  • Supertest: Et bibliotek udviklet til at teste HTTP-servere. Det gør det nemt at sende anmodninger og kontrollere svar.
  • Express: Vores webframework til at bygge selve API'et.

Opsætning af Supertest

Først installerer vi de nødvendige pakker. Vi skal bruge express til vores eksempel-API samt jest og supertest til test.

Kør denne kommando i projektets terminal:

npm install --save-dev express jest supertest

Vores enkle Express-app

Lad os oprette en grundlæggende Express-applikation, som vi kan teste. Vi definerer nogle få enkle ruter.

Bemærk, at vi eksporterer app-instansen, som Supertest bruger til at sende anmodninger direkte uden at skulle starte en aktiv server på en port.

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}`);
  });
}

Test af et GET-endepunkt

Lad os nu skrive vores første integrationstest. Vi bruger supertest til at sende en GET-anmodning til vores rodendepunkt / og kontrollere svaret.

Opret en fil som app.test.js, og tilføj følgende:

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!');
  });
});

Kontrol af JSON-svar

API'er returnerer ofte JSON-data. Supertest gør det nemt at få adgang til den fortolkede JSON-brødtekst i et svar ved hjælp af res.body.

Lad os teste vores /data-endepunkt for at sikre, at det returnerer det korrekte JSON-objekt:

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');
  });
});

Test af POST-anmodninger

Test af POST-anmodninger ligner dette, men vi bruger .post() og ofte .send() til at vedhæfte en anmodningsbrødtekst.

Vores /echo-endepunkt returnerer ganske enkelt den JSON, det modtager. Lad os teste denne funktion:

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);
  });
});

Databaseinteraktioner og oprydning

Når du tester API'er, der interagerer med en database, gør du typisk følgende:

  • Bruger en dedikeret testdatabase for at undgå at forurene dine udviklingsdata.
  • Rydder databasen før hver testsuite eller hvert testtilfælde (ved hjælp af beforeEach/afterEach-hooks).
  • Indlæser testdata, hvis en test kræver bestemte data.

Det sikrer, at testene er uafhængige og kan gentages.

API-testscenarie

Du tester et Node.js-API-endepunkt /users, der accepterer POST-anmodninger for at oprette en ny bruger. Hvilke af følgende udsagn er SANDE om integrationstest af dette endepunkt?

Opsummering: Integrationstest

Godt klaret! Du har lært det grundlæggende i integrationstest af Node.js-API-endepunkter:

  • Hvad det er: Kontrol af, at komponenter fungerer sammen, især ved API-anmodninger.
  • Værktøjer: Brug af Supertest sammen med Jest til at simulere HTTP-anmodninger.
  • Metode: Afsendelse af GET/POST-anmodninger og kontrol af statuskoder, brødtekstindhold og datatyper.
  • Bedste praksis: Overvejelse af dedikerede testdatabaser for at opnå isolation.

Det sikrer, at dit API er robust og pålideligt!

Gratis at komme i gang

Lær JavaScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
22
Lektioner
92

Ofte stillede spørgsmål

Er lektionen “Integrationstest af API-endepunkter” gratis?

Ja — hele teksten til “Integrationstest af API-endepunkter” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Bootcamp i backendudvikling med Node.js-kurset, skal du opgradere til CoddyKit PRO. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Integrationstest af API-endepunkter”?

Implementér integrationstests for at kontrollere samspillet mellem forskellige komponenter og sikre API-funktionaliteten. Du øver dig i Bootcamp i backendudvikling med Node.js med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Bootcamp i backendudvikling med Node.js?

Der kræves ingen tidligere erfaring. Bootcamp i backendudvikling med Node.js på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Integrationstest af API-endepunkter”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Bootcamp i backendudvikling med Node.js-lektion?

Ja. Alle Bootcamp i backendudvikling med Node.js-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Enhedstest med Jest
  2. Integrationstest af API-endepunkter
  3. Effektive fejlfindingsmetoder
  4. Mocking og test doubles i Node.js
← Tilbage til Bootcamp i backendudvikling med Node.js