Architectuur van micro-frontends met Module Federation · Les

Strategieën voor integration testing

Ontwikkel integratietests om de interactie tussen verschillende Micro Frontends en gedeelde modules te verifiëren.

Les 2 van 411 stappen

Strategieën voor integration testing is een gratis Architectuur van micro-frontends met Module Federation-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Architectuur van micro-frontends met Module Federation. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Architectuur van micro-frontends met Module Federation bevat in totaal 4 lessen.

Inleiding tot integratietests voor MFEs

Welkom bij integratietests voor Micro Frontends! In deze les leer je hoe je de verbindingen en interacties tussen verschillende onderdelen van je gefedereerde applicatie test.

Eenheidstests controleren afzonderlijke componenten, terwijl integratietests ervoor zorgen dat meerdere Micro Frontends (MFEs) of gedeelde modules correct samenwerken als één geheel.

Waarom integratietests belangrijk zijn

In een Micro Frontend-architectuur ontwikkelen verschillende teams vaak zelfstandig onderdelen van de applicatie. Dat biedt veel flexibiliteit, maar brengt ook unieke uitdagingen voor tests met zich mee.

  • Interacties controleren: zorg ervoor dat MFEs correct met elkaar communiceren.
  • Integratiefouten opsporen: vind problemen waarbij componenten niet goed op elkaar aansluiten.
  • Vertrouwen vergroten: implementeer met de zekerheid dat je gefedereerde applicatie werkt.

Dit is belangrijk, omdat een bug in de interactie tussen twee MFEs de volledige gebruikerservaring kan verstoren.

Uitdagingen bij integratietests voor MFEs

Het testen van interacties tussen onafhankelijke applicaties is niet altijd eenvoudig. Dit zijn enkele veelvoorkomende obstakels:

  • Omgeving instellen: het nabootsen van een volledige gefedereerde omgeving voor tests kan complex zijn.
  • Afhankelijkheden beheren: omgaan met meerdere externe modules en hun versies.
  • Testisolatie: ervoor zorgen dat tests elkaar niet beïnvloeden wanneer ze de grenzen tussen MFEs overschrijden.
  • Prestaties: integratietests zijn doorgaans trager dan eenheidstests.

We bekijken strategieën om deze uitdagingen te overwinnen.

Belangrijke principes en reikwijdte

Richt je bij het ontwerpen van integratietests voor Micro Frontends op deze principes:

  • Test contracten: controleer of beschikbaar gestelde interfaces en gebruikte API's (gegevensstructuren en functiesignaturen) compatibel zijn.
  • End-to-endprocessen: test essentiële gebruikersprocessen die meerdere MFEs omvatten.
  • Gegevensdoorgifte: zorg ervoor dat gegevens correct worden bijgewerkt in gedeelde status of communicatiekanalen.
  • UI-samenstelling: controleer of verschillende MFE-interfaces correct worden weergegeven en zich gedragen zoals verwacht wanneer ze worden samengevoegd.

Test interne logica die al door eenheidstests wordt afgedekt niet opnieuw.

Tools voor integratietests van MFEs

Verschillende tools kunnen helpen bij integratietests van MFEs:

  • Jest / React Testing Library: uitstekend geschikt voor integratie op componentniveau, waarbij je test hoe een host een externe component geïsoleerd gebruikt.
  • Cypress / Playwright: uitstekend geschikt voor end-to-endtests (E2E), waarbij je echte gebruikersinteracties tussen meerdere geïmplementeerde MFEs in een browser simuleert.
  • Mock Service Worker (MSW): voor het mocken van API-aanroepen en netwerkaanvragen, handig bij het testen van MFEs die afhankelijk zijn van back-endservices.

De keuze hangt af van de reikwijdte en diepgang van je integratietests.

Het gebruik van gedeelde componenten testen

Een veelvoorkomend integratiepunt voor MFEs is een hostapplicatie die een component of hulpprogramma gebruikt dat door een externe applicatie via Module Federation beschikbaar wordt gesteld.

We moeten controleren of de host correct ontvangt en gebruikt wat de externe applicatie aanbiedt. Hier volgt een vereenvoudigd JavaScript-voorbeeld om te laten zien hoe een gedeeld hulpprogramma wordt gebruikt:

function getSharedGreeting(name) {
  return `Hello, ${name} from the shared module!`;
}

function renderHostAppGreeting(userName) {
  // Host app consumes the shared utility
  const greeting = getSharedGreeting(userName);
  return `Host App Display: ${greeting}`;
}

// Simulate running the host app's logic
console.log(renderHostAppGreeting("CoddyKit Learner"));

Gebeurtenissen tussen MFEs controleren

Veel Micro Frontends communiceren via een gebeurtenisbussysteem of aangepaste gebeurtenissen. Integratietests moeten controleren of gebeurtenissen correct worden verzonden en verwerkt over de grenzen van MFEs heen.

Je kunt deze gebeurtenissen in je tests simuleren en controleren of de ontvangende MFE reageert zoals verwacht. Hier volgt een conceptueel testfragment:

// In a test file (e.g., using Jest)

describe('MFE A dispatches, MFE B reacts', () => {
  test('MFE B updates state after MFE A event', () => {
    // 1. Render MFE B (the listener)
    const { getByText } = render(<MFEBComponent />);

    // 2. Simulate MFE A dispatching an event
    //    (e.g., via a global event bus or DOM event)
    window.dispatchEvent(new CustomEvent('userLoggedIn', {
      detail: { username: 'testuser' }
    }));

    // 3. Assert MFE B's UI or state updated
    expect(getByText('Welcome, testuser!')).toBeInTheDocument();
  });
});

Hiermee controleer je het communicatiecontract.

Interacties met gedeelde status testen

Als je MFEs een globale statusopslag delen (bijvoorbeeld Redux of Zustand), moeten integratietests controleren of wijzigingen in één MFE de gedeelde status correct bijwerken en of andere MFEs die deze status gebruiken daar passend op reageren.

Daarvoor worden vaak meerdere MFEs in een testomgeving weergegeven en worden gebruikersinteracties gesimuleerd:

// Conceptual test for shared state

describe('Shared user profile state', () => {
  test('MFE A update reflects in MFE B', async () => {
    // 1. Render Host app with MFE A and MFE B
    const { getByLabelText, getByText } = render(<HostApp />);

    // 2. Simulate user action in MFE A (e.g., update profile name)
    fireEvent.change(getByLabelText('Name Input'), { target: { value: 'Jane Doe' } });
    fireEvent.click(getByText('Save Profile'));

    // 3. Assert MFE B (which displays profile) shows the new name
    await waitFor(() => {
      expect(getByText('Profile Name: Jane Doe')).toBeInTheDocument();
    });
  });
});

Zo zorg je ervoor dat de status consistent blijft in je gefedereerde applicatie.

Externe afhankelijkheden mocken

Soms hoef je niet voor elke integratietest alle externe MFE's te laden. Misschien wil je specifieke externe modules of hun afhankelijkheden mocken.

  • Waarom mocken? Snellere tests, fouten isoleren en specifieke scenario's testen (bijvoorbeeld een fout in een externe MFE).
  • Hoe mock je? Gebruik de mogelijkheden van je testframework om te mocken (bijvoorbeeld jest.mock() van Jest) en vervang een extern component of een externe functie door een gecontroleerde test-dubbel.
// Example of mocking a remote component

jest.mock('remoteApp/Button', () => ({ 
  __esModule: true, 
  default: ({ onClick, children }) => (
    <button onClick={onClick} data-testid="mock-button">
      {children} (Mocked)
    </button>
  ),
}));

Zo kun je de logica van de host testen zonder de echte externe MFE nodig te hebben.

Focus van integratietests

Wat is het belangrijkste doel van integratietesten in een micro-frontendarchitectuur?

Samenvatting: strategieën voor integratietesten

Goed gedaan! Je hebt belangrijke strategieën voor het integratietesten van micro-frontends geleerd:

  • Integratietests controleren de interacties tussen MFE's en gedeelde modules.
  • Ze pakken unieke uitdagingen aan, zoals het instellen van de omgeving en het isoleren van tests.
  • Richt je op contracten, gegevensstromen en communicatie tussen MFE's.
  • Hulpmiddelen zoals Jest, React Testing Library, Cypress en Playwright zijn essentieel.
  • Technieken omvatten het testen van het gebruik van componenten, gebeurtenisafhandeling, gedeelde status en strategisch mocken.

Door deze strategieën toe te passen, kun je robuustere en betrouwbaardere gefedereerde applicaties bouwen. Blijf oefenen!

Gratis beginnen

Leer JavaScript met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Strategieën voor integration testing” gratis?

Ja — de volledige tekst van “Strategieën voor integration testing” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Architectuur van micro-frontends met Module Federation wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Architectuur van micro-frontends met Module Federation bevat in totaal 4 lessen.

Wat leer ik in “Strategieën voor integration testing”?

Ontwikkel integratietests om de interactie tussen verschillende Micro Frontends en gedeelde modules te verifiëren. Je oefent met Architectuur van micro-frontends met Module Federation door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Architectuur van micro-frontends met Module Federation te beginnen?

Ervaring vooraf is niet nodig. Architectuur van micro-frontends met Module Federation op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Strategieën voor integration testing”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Architectuur van micro-frontends met Module Federation?

Ja. Elke les over Architectuur van micro-frontends met Module Federation bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Gefedereerde componenten unit-testen
  2. Strategieën voor integration testing
  3. End-to-endtesten voor meerdere apps
  4. Contracttesten tussen micro frontends
← Terug naar Architectuur van micro-frontends met Module Federation