A SuperTest REST API tesztelő Node.js könyvtár.
npm install supertest --save-dev
const request = require('supertest');
Futtatás:
node proba.js
Ha nem kapunk kimenetet, a telepítés sikeres.
const request = require('supertest'); request('http://localhost:3000') .get('/api/employees') .end(function(err, res) { if (err) throw err; console.log(res.body); });
Az end() metódus véglegesíti a kérést, az API hívásával.
Az expect() metódussal jelezzük, hogy az elvárt választ 200.
request('http://localhost:3000') .get('/api/employees') .expect(200) .end(function(err, res) { if (err) throw err; });
Az expect() hívást az end() előtt kell megtenni.
Vizsgáljuk azt is, hogy a válasz JSON volt-e.
request('http://localhost:3000') .get('/api/employees') .expect(200) .expect('Content-Type', 'application/json') .end(function(err, res) { if (err) throw err; });
request('http://localhost:3000') .get('/api/employees') .expect(200) .expect('Content-Type', 'application/json') .expect(function(res) { if (!res.body.hasOwnProperty('name')) throw new Error("Expected 'name' key!"); if (!res.body.hasOwnProperty('city')) throw new Error("Expected 'city' key!"); }) .end(function(err, res) { if (err) throw err; });
Használhatunk assert() metódust, így rövidebb sorokat kapunk:
const request = require('supertest'); const assert = require('assert'); request('http://localhost:3000') .get('/api/employee') .expect(200) .expect('Content-Type', 'application/json') .expect(function(res) { assert(res.body.hasOwnProperty('name')); assert(res.body.hasOwnProperty('city')); }) .end(function(err, res) { if (err) throw err; });
describe('Dolgozók tesztje', function() { it('válasz, JSON tartalommal', function(done) { request('http://localhost:3000') .get('/api/employees') .expect(200) .expect('Content-Type', 'application/json') .expect(/{"name":".*","city":"Szeged"}/, done); }); });
Vegyük észre, hogy elhagytuk az end() metódust, és az utolsó expect() metódus végére egy done paraméter került.