Download - Snabba tester med Nodejs
TDD is dead. Long live testing
Slow database test fallacy
Snabba tester för Node.js
nock supertest
var nock = require('nock') !
nock('http://api.example.com') .get('/me') .reply(200, { username: 'dude', email: '[email protected]' })
nock
supertestvar request = require('supertest') !
request('http://api.example.com') .get('/me') .expect(200) .expect({ username: 'dude', email: '[email protected]' }) .end(function (err, res) {})
supertestvar request = require('supertest') !
request('http://api.example.com') .get('/me') .expect(200) .expect({ username: 'dude', email: '[email protected]' }) .end(function (err, res) {})
require('../app.js')
express// expose app for tests module.exports = app !
// listen only on normal start if (!module.parent) { app.listen(...) }
ApplikationWebb-läsare
Externt API
Sätter upp lyssnare (supertest)
Sätter upp (nock)
ApplikationWebb-läsare
Externt API
Fejkat externt APITest Testar
(supertest)
Hur tar vi testerna till nästa nivå?
Kör vi testerna
parallellt?
Hindermocha require
mocha ppunit, lab require require.js, IoC continuation-local-storage
Hinder
0
1
2
3
4
Sekventiellt Parallella testsviter Parallella tester
Test
tid i
seku
nder
0
1
3
4
5
Latens hos bakomliggande system0 ms 10 ms 20 ms 30 ms 40 ms
sekventiella tester parallella sviter parallella tester
Rela
tiv te
sttid
0,00
0,25
0,50
0,75
1,00
Antal kärnor1st 2st 4st 8st
tester med nock & supertest
en till sak...
profilera dina tester!
57.92% parse_buffer dustjs-linkedin/lib/parser.js
Före Efter
Sammanfattning1. Ersätt riktiga HTTP-anrop med nock2. (Om det inte är möjligt, försök köra
testerna parallellt)3. Profilera dina tester4. Kör testerna på flera kärnor
valtechlabs.se
Tack!