Help me bij het implementeren van unittests voor mijn JavaScript-functies
description
Door het implementeren van unittests kun je bugs vroeg opsporen, de betrouwbaarheid van de code verbeteren en toekomstige codewijzigingen vereenvoudigen, terwijl je ervoor zorgt dat bestaande functionaliteit behouden blijft.
prompt
try_prompt
Help me bij het opzetten van unittests voor mijn JavaScript-functies om te zorgen dat ze werken zoals verwacht. Geef me alsjeblieft begeleiding over het kiezen van e ... more
generate_helper
...
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een gids om je te helpen bij het opzetten van unittests voor je JavaScript-functies:
1. Kies een testframework
Voor JavaScript zijn populaire testframeworks:
- Jest: eenvoudig te gebruiken, inclusief mocking, assertions, en code coverage.
- Mocha + Chai: flexibel, met uitgebreide assertions en plugins.
- Jasmine: alles-in-één, zonder afhankelijkheden.
Voor eenvoud en uitgebreide functionaliteit raad ik Jest aan.
2. Testomgeving instellen
- Installeer Node.js en npm als je dat nog niet hebt.
- Maak een nieuw project of gebruik je bestaande project.
- Installeer Jest:
```bash
npm init -y
npm install --save-dev jest
```
- Voeg in package.json onder "scripts" toe:
```json
"test": "jest"
```
3. Schrijf je eerste test
Maak een bestand bijvoorbeeld `add.test.js`:
```javascript
const add = require('./add'); // pas aan afhankelijk van je bestandsnaam
test('voegt twee getallen samen', () => {
expect(add(2, 3)).toBe(5);
});
```
4. Functie exporteren
Zorg dat je functie exporteert in `add.js`:
```javascript
function add(a, b) {
return a + b;
}
module.exports = add;
```
5. Test uitvoeren
In terminal:
```bash
npm test
```
6. Beste praktijken
- Test verschillende scenario’s: positieve, negatieve getallen, nul, ongeldige inputs.
- Gebruik descriptive testnamen: `Voegt twee positieve getallen toe`.
- Houd tests klein en specifiek.
- Voeg commentaar toe indien nodig.
- Voer regelmatig tests uit bij codewijzigingen.
- Gebruik code coverage tools (bijv. Jest's ingebouwde coverage) om te zorgen dat je voldoende testdekking hebt.
---
Wil je dat ik voorbeelden geef van uitgebreide testgevallen voor jouw functies of hulp bij het structureren van je tests?
provider: deepseek
model: deepseek-chat
Zeker, ik help je graag met het opzetten van unittests voor je JavaScript-functies. Hier is een complete begeleiding in het Nederlands:
### 1. Kies een Testframework
Voor JavaScript zijn dit de populairste opties:
- **Jest** (Aanbevolen voor beginners):
- Eenvoudige configuratie
- Uitgebreide features (mocking, snapshots)
- Zeer populair in de community
- **Mocha** + **Chai**:
- Flexibeler maar vereist meer setup
- Mocha als testrunner, Chai voor assertions
**Mijn advies**: Start met Jest vanwege de lage instapdrempel.
Installatie:
```bash
npm install --save-dev jest
```
### 2. Schrijf je Eerste Test
Voor je `add` functie:
```javascript
// add.test.js
const { add } = require('./jouw-bestand'); // Pas pad aan
describe('add functie', () => {
test('telt twee positieve getallen correct op', () => {
expect(add(2, 3)).toBe(5);
});
test('telt positief en negatief getal correct op', () => {
expect(add(5, -3)).toBe(2);
});
test('werkt met nulwaarden', () => {
expect(add(0, 0)).toBe(0);
expect(add(5, 0)).toBe(5);
});
test('werkt met decimale getallen', () => {
expect(add(2.5, 1.5)).toBe(4);
});
});
```
### 3. Teststructuur (AAA-patroon)
- **Arrange**: Voorbereiden van testdata
- **Act**: Uitvoeren van de te testen functie
- **Assert**: Controleren van het resultaat
Voorbeeld:
```javascript
test('telt twee getallen correct op', () => {
// Arrange
const a = 5;
const b = 3;
// Act
const result = add(a, b);
// Assert
expect(result).toBe(8);
});
```
### 4. Beste Praktijken voor Testkwaliteit
**Test dekking:**
- Streef naar 70-80% testdekking
- Test alle belangrijke paden (happy path, edge cases)
**Testisolatie:**
- Elke test moet onafhankelijk zijn
- Gebruik `beforeEach`/`afterEach` voor setup/cleanup
**Leesbare testnamen:**
```javascript
// Goed
test('retourneert null wanneer input ongeldig is')
// Minder goed
test('test invalid input')
```
**Edge cases voor je add functie:**
```javascript
test('werkt met grote getallen', () => {
expect(add(999999999, 1)).toBe(1000000000);
});
test('werkt met string inputs die nummers zijn', () => {
expect(add('2', '3')).toBe(5);
});
```
### 5. Package.json Configuratie
Voeg dit toe aan je `package.json`:
```json
{
"scripts": {
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage"
}
}
```
### 6. Uitvoeren van Tests
```bash
npm test # Eén keer uitvoeren
npm run test:watch # Watch mode (bij ontwikkelen)
npm run test:coverage # Met dekking rapport
```
### 7. Extra Tips
- Test **één ding per testcase**
- Gebruik beschrijvende foutmeldingen
- Test zowel succes- als foutscenario's
- Houd tests snel en voer ze regelmatig uit
Begin met deze basis en breid geleidelijk uit naar complexere functies. Voor je `add` functie zijn de bovenstaande testvoorbeelden een uitstekend startpunt!

