2016-04-26 5 views
-1

Erstellt gerade ein neues Open-Source-Middleware-Projekt für Express. Ich möchte in der Lage sein, die json Antwort von den Wegen zu testen, die es erzeugt ... Gibt es irgendwie ich kann das tun, ohne tatsächlich einen grunzen Aufschlag zu schießen und die URL zu überprüfen?Knoten Express Unit Test JSON Antwort

So würde Ziel für someway sein, um die Strecke zu laufen, sondern json an den Browser sendet ich es in einer Variablen speichern kann/etc ...

Was die Middleware tut, ist Routen auf Annotationen in Javascript basierend erzeugt Dateien.

https://github.com/kmgilbert100/annotation-route-loader

Ich möchte meine Unit-Test umfassen die Prüfung der JSON Antworten, damit Sie app.use(loader) die Routen aller

laden würde in der obigen URL unter Tests/Routen/**/*

Hinweis sehen

Im Folgenden finden Sie die aktuelle Mokka Test

// npm modules 
const chai = require('chai'); 
const _ = require('lodash'); 
const express = require('express'); 
// local modules 
var routeLoader = require('../src/index'); 
// testing module methods 
const assert = chai.assert; 

describe('annotation-route-loader',() => { 

    // store collection of routes 
    var routePaths = []; 

    before("Create collection to check from",() => { 

     var loader = routeLoader({ 
      baseUrl: '/', 
      path: './routes', 
      pattern: '**/*.js', 
      params: { 
       sports: [ 
        'footbal', 
        'baseball', 
        'motocross', 
        'hockey' 
       ] 
      } 
     }); 

     loader['stack'].forEach(stack => { 

      routePaths.push({ 
       path: stack.route.path, 
       methods: stack.route.methods 
      }) 

     }) 

    }); 


    it('Should make sure the default path is valid', (done) => { 

     // Try And Find Path 
     var defaultPath = _.find(routePaths, {path: '/'}); 
     assert.isObject(defaultPath); 
     assert.isTrue(defaultPath.methods.get); 

     // Make Callback 
     done() 

    }); 


    it('Should make sure the sports path is valid', (done) => { 

     // Try And Find Path 
     var defaultPath = _.find(routePaths, {path: '/sports'}); 
     assert.isObject(defaultPath); 
     assert.isTrue(defaultPath.methods.get); 

     // Make Callback 
     done() 

    }); 


    it('Should make sure the sports list path is valid', (done) => { 

     // Try And Find Path 
     var defaultPath = _.find(routePaths, {path: '/sports/list'}); 
     assert.isObject(defaultPath); 
     assert.isTrue(defaultPath.methods.get); 

     // Make Callback 
     done() 

    }); 

}) 
+1

teilen einige Code bitte. Was hast du probiert? Hast du versucht, Mocks zu benutzen? –

+0

Bereitgestellt - Ich habe die Router-Instanzen/etc kann nichts finden, um zu helfen .. habe nicht zu viel in express api tho gegraben, um zu sehen, wie es behandelt –

+0

Werfen Sie einen Blick auf Postman, hat es Testsuite eingebaut, die erlauben Sie es, den Endpunkt/api mit vordefiniertem json zu testen, und der Testfall kann in JS geschrieben werden. –

Antwort

0

Danke für die Kommentare!

https://github.com/visionmedia/supertest

Beendet die Arbeit erledigt mit Supertest bis zu erhalten!

unten Snippet ansehen ...

var request = require('supertest'); 
var express = require('express'); 

var app = express(); 

app.get('/user', function(req, res) { 
    res.status(200).json({ name: 'tobi' }); 
}); 

request(app) 
    .get('/user') 
    .expect('Content-Type', /json/) 
    .expect('Content-Length', '15') 
    .expect(200) 
    .end(function(err, res) { 
    if (err) throw err; 
    });