Iemand ervaring met unit tests uitvoeren binnen Express JS? De tests schrijven lukt me wel, het probleem zit 'm voornamelijk in hoe ik nu een connectie leg met de app. Op dit moment verwijs ik naar een url, uiteraard is dat geen optie als ik de tests met Jenkins wil uitvoeren. Dan wil ik uiteraard de huidige app testen voordat het live gaat, en niet verwijzen naar een bestaande url.
Een voorbeeld van mijn huidige test script
Volgens https://www.npmjs.org/package/supertest lijkt onderstaand voldoende om mijn express app te testen:
Maar met bovenstaand krijg ik 404 errors op alle routes die ik wil testen.
Iemand hier ervaring mee? Is er anders een optie om met Jenkins de huidige app eerst te starten en vervolgens de tests alsnog via een localhost url uit te voeren? Ik heb het eerder geprobeerd, maar dan lijkt die verstrikt te raken in een eindeloze loop.
Een voorbeeld van mijn huidige test script
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| var should = require('should'), assert = require('assert'), request = require('supertest'), express = require('express'); describe('Routing', function() { var app = 'http://someurl.com'; describe('Account', function() { it('should return error trying to save duplicate username', function(done) { var profile = { username: 'vgheri', password: 'test', firstName: 'Valerio', lastName: 'Gheri' }; // once we have specified the info we want to send to the server via POST verb, // we need to actually perform the action on the resource, in this case we want to // POST on /api/profiles and we want to send some info // We do this using the request object, requiring supertest! request(app) .post('/api/profiles') .send(profile) // end handles the response .end(function(err, res) { if (err) { throw err; } // this is should.js syntax, very clear res.should.have.status(400); done(); }); }); }); |
Volgens https://www.npmjs.org/package/supertest lijkt onderstaand voldoende om mijn express app te testen:
JavaScript:
1
2
3
4
| var request = require('supertest'), express = require('express'); var app = express(); |
Maar met bovenstaand krijg ik 404 errors op alle routes die ik wil testen.
Iemand hier ervaring mee? Is er anders een optie om met Jenkins de huidige app eerst te starten en vervolgens de tests alsnog via een localhost url uit te voeren? Ik heb het eerder geprobeerd, maar dan lijkt die verstrikt te raken in een eindeloze loop.