Ontwikkel Geavanceerde Mock-API's in Postman of Insomnia voor Effectieve Testautomatisering
description
Met deze prompt kan ik effectieve mock-API's ontwikkelen die mijn testautomatisering verbeteren door onafhankelijkheid van echte API's. Dit lost problemen op zoals beperkte testomgevingen en maakt het mogelijk om complexe scenario’s te simuleren, wat betrouwbaarheid en snelheid van testen verhoogt.
prompt
Help me geavanceerde mock-API's te bouwen in <kies Postman of Insomnia> om mijn API-testen te automatiseren. Mijn doel is om gesimuleerde API-responses te creëren voor endpoint: <voer je API-e ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze gids om geavanceerde mock-API's in Postman te maken voor jouw endpoint /users/{id}, inclusief dynamische data, verschillende scenario’s, foutafhandeling en variabele responstijden:
1. Mock-API aanmaken in Postman:
- Ga naar Postman en klik op “New” > “Mock Server”.
- Kies “Create a new mock server”.
- Geef het een naam, bijvoorbeeld “User API Mock”.
- Selecteer een collectie waarin je de mock responses plaatst.
2. Collectie en endpoints structureren:
- Maak een collectie genaamd “User API”.
- Voeg een request toe met de URL: /users/{id}.
- Stel de HTTP-methode in op GET.
3. Variabele data en scenario’s instellen:
- Maak verschillende responses voor /users/{id} door nieuwe mock responses toe te voegen.
- Voor dynamische data kun je gebruik maken van Postman’s voorbeeld- en environment-variabelen.
- Bijvoorbeeld, voor een succesvolle respons:
```json
{
"id": "{{userId}}",
"name": "Gebruiker {{userId}}",
"email": "user{{userId}}@voorbeeld.com"
}
```
- Voeg een voorbeeld toe met deze data en stel de variabele `userId` in.
4. Scenario’s configureren:
- **Succesvol antwoord:**
- Response code: 200
- Body: zoals hierboven.
- Variabele `userId` kan worden ingesteld via URL-parameters of environment variabelen.
- **Foutafhandeling (bijvoorbeeld niet gevonden):**
- Response code: 404
- Body:
```json
{ "error": "Gebruiker niet gevonden" }
```
- Voeg conditionele logica toe in de mock door gebruik te maken van de "Example" feature en scripting.
- **Serverfout:**
- Response code: 500
- Body:
```json
{ "error": "Interne serverfout" }
```
5. Variabele responstijden simuleren:
- In de mock response kun je een delay toevoegen:
- Ga naar de mock response instellingen.
- Stel “Response delay” in op een willekeurige waarde, bijvoorbeeld tussen 100ms en 5000ms, afhankelijk van het scenario.
- Of gebruik scripts om dynamisch een vertraging te bepalen:
```javascript
// In de Pre-request script of Test script
const minDelay = 100; // ms
const maxDelay = 5000; // ms
const delay = Math.floor(Math.random() * (maxDelay - minDelay + 1)) + minDelay;
setTimeout(function() {}, delay);
```
6. Integratie in testworkflows:
- Gebruik de mock URL in plaats van je echte endpoint tijdens testen.
- Automatiseer tests via Postman Collection Runner of Newman.
- Voeg tests toe die verschillende scenario’s controleren:
```javascript
pm.test("Gebruiker gevonden", function () {
pm.response.to.have.status(200);
pm.response.to.have.jsonBody("id");
});
pm.test("Fout bij niet gevonden gebruiker", function () {
pm.response.to.have.status(404);
});
```
- Voor dynamische tests kun je variabelen en scripting combineren.
7. Automatiseren en onderhouden:
- Update regelmatig je mock responses om nieuwe scenario’s te simuleren.
- Gebruik environment variabelen voor flexibiliteit.
- Combineer met Continuous Integration tools voor geautomatiseerde tests.
Door deze aanpak kun je complexe, realistische mock-API's maken die je testworkflows krachtig en flexibel maken.
provider: deepseek
model: deepseek-chat
Absoluut! Hier is een uitgebreide handleiding voor het bouwen van geavanceerde mock-API's in Postman voor jouw `/users/{id}` endpoint, inclusief dynamische data, foutafhandeling en variabele responstijden.
---
### Stap 1: Mock Server Aanmaken
1. Maak een nieuwe collectie aan (bijv. "Users API Mock").
2. Klik op de drie bolletjes naast de collectie -> **Mock collection**.
3. Geef je mock server een naam (bijv. "Users Service Simulator") en kies een environment indien nodig.
4. Klik op **Create Mock Server**.
---
### Stap 2: Voorbeeld Requests & Responses Toevoegen
Voeg een request toe aan je collectie voor het `/users/{id}` endpoint.
* **Method:** `GET`
* **URL:** `{{url}}/users/{{id}}` (gebruik variabelen voor flexibiliteit)
Klik op **Examples** -> **Save Response** om een voorbeeldresponse op te slaan. Noem het voorbeeld bijvoorbeeld "SUCCESS_200".
---
### Stap 3: Geavanceerde Dynamische Responses (Met Scripts)
Postman gebruikt de **Dynamic Variables** van zijn sandbox (op Lodash en Faker.js gebaseerd) voor dynamische data.
**Voorbeeld van een mock response body voor "SUCCESS_200":**
```json
{
"id": "{{$randomInt}}",
"firstName": "{{$randomFirstName}}",
"lastName": "{{$randomLastName}}",
"email": "{{$randomEmail}}",
"avatar": "{{$randomImageUrl}}",
"role": "{{$randomArrayItem ['admin', 'user', 'editor']}}",
"isActive": "{{$randomBoolean}}",
"createdAt": "{{$timestamp}}",
"profile": {
"age": "{{$randomInt 18 65}}",
"city": "{{$randomCity}}"
}
}
```
**Belangrijke Dynamic Variables:**
* `{{$randomInt}}`, `{{$randomInt 1 100}}` (met min/max)
* `{{$randomFirstName}}`, `{{$randomLastName}}`
* `{{$randomEmail}}`
* `{{$randomBoolean}}`
* `{{$timestamp}}` (huidige Unix timestamp)
* `{{$randomImageUrl}}`
* `{{$randomCity}}`
* `{{$randomArrayItem ['admin', 'user', 'editor']}}`
---
### Stap 4: Configureren van Scenario's met Voorbeelden
Je beheert verschillende scenario's door **meerdere voorbeelden** aan één request toe te voegen. De mock server retourneert het voorbeeld waarvan de naam overeenkomt met de opgegeven `x-mock-response-name` header.
1. **Succesvolle Response (200 OK):**
* **Voorbeeldnaam:** `SUCCESS_200`
* **Status:** `200 OK`
* **Body:** Zie het JSON voorbeeld hierboven.
2. **Gebruiker Niet Gevonden (404 Not Found):**
* **Klik op "Add Example"** en noem het `ERROR_404_NOT_FOUND`.
* **Status:** `404 Not Found`
* **Body:**
```json
{
"error": {
"code": "USER_NOT_FOUND",
"message": "De gebruiker met ID {{$request.params.id}} is niet gevonden in het systeem.",
"requestId": "{{$guid}}"
}
}
```
3. **Ongeautoriseerde Toegang (401 Unauthorized):**
* **Voorbeeldnaam:** `ERROR_401_UNAUTHORIZED`
* **Status:** `401 Unauthorized`
* **Headers:** Voeg een `WWW-Authenticate` header toe.
* **Body:**
```json
{
"error": {
"message": "Authenticatie vereist om toegang te krijgen tot deze resource."
}
}
```
4. **Serverfout (500 Internal Error):**
* **Voorbeeldnaam:** `ERROR_500_INTERNAL_ERROR`
* **Status:** `500 Internal Server Error`
* **Body:**
```json
{
"error": {
"message": "Er is een onverwachte fout opgetreden op de server. Probeer het later opnieuw."
}
}
```
---
### Stap 5: Variabele Responstijden Simuleren
Gebruik de `x-mock-response-delay` header in je **aanroepende request** om een vertraging af te dwingen. Dit overschrijft de standaardvertraging van de mock server.
* **Standaard vertraging:** Instelbaar bij het aanmaken/bewerken van de mock server (0-10 sec).
* **Specifieke vertraging per request:** Voeg de volgende header toe aan je testrequest:
* **Header:** `x-mock-response-delay`
* **Value:** `5000` (voor een vertraging van 5 seconden)
---
### Stap 6: Integratie in Testworkflows
**1. Testen met de Mock URL:**
* Je krijgt een speciale URL voor je mock server (bijv. `https://<id>.mockapi.io`).
* Gebruik deze URL als `baseUrl` in je Postman Environment.
* Je tests kunnen nu naar `{{url}}/users/123` gaan en krijgen de gemockte response.
**2. Scenario's Aanroepen in Tests:**
Gebruik de `x-mock-response-name` header in je request om specifiek een scenario aan te roepen. Dit is perfect voor geautomatiseerde testscripts.
* **Header:** `x-mock-response-name`
* **Value:** `ERROR_404_NOT_FOUND`
**Voorbeeld van een Postman Test Script:**
```javascript
// Stel de base URL in voor de mock server
pm.environment.set("url", "https://jouw-unieke-id.mockapi.io");
// Test het succes scenario
pm.test("Mock - Succesvolle gebruikersresponse", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("id");
pm.expect(jsonData).to.have.property("email");
pm.expect(jsonData.email).to.include("@");
});
// Test het 404 scenario
// (Hiervoor moet je de header 'x-mock-response-name: ERROR_404_NOT_FOUND' instellen in de request)
pm.test("Mock - Gebruiker niet gevonden", function () {
pm.response.to.have.status(404);
var jsonData = pm.response.json();
pm.expect(jsonData.error.code).to.eql("USER_NOT_FOUND");
pm.expect(jsonData.error.message).to.include(pm.request.url.query.get("id")); // Controleer of het ID in de foutmelding staat
});
```
**3. Gebruik in CI/CD (bijv. met Newman):**
Je kunt je collectie met de mock voorbeelden exporteren en deze rechtstreeks uitvoeren met Newman. De tests zullen altijd tegen de consistente mock server lopen, wat ze ultra betrouwbaar en snel maakt.
```bash
newman run your-collection.json -e your-environment.json --globals your-globals.json
```
---
### Samenvatende Tips:
* **Environment Variables:** Gebruik environment variables voor je mock server URL (`url`) en andere configuraties. Dit maakt wisselen tussen mock, development en productie omgevingen eenvoudig.
* **Descriptieve Namen:** Geef je voorbeelden duidelijke, consistente namen (e.g., `SCENARIO_HTTPCODE_DESCRIPTION`).
* **Documentatie:** Voeg beschrijvingen toe aan je voorbeelden in Postman om uit te leggen welk scenario ze simuleren. Dit is cruciaal voor teamleden.
Door deze aanpak te volgen, kun je een krachtige, voorspelbare en geïsoleerde testomgeving creëren die alle denkbare edge cases van je echte API kan simuleren.