2016-04-26 16 views
-1

Express用の新しいオープンソースミドルウェアプロジェクトを作成しました。私はそれが生成するルートからjsonレスポンスを単体テストすることができるようにしたいと思います...とにかく、実際にはむちゃくちゃなサービスを起動してURLをチェックせずにこれを行うことができますか?ノードエクスプレスユニットテストJSONレスポンス

何らかの方法ルートを実行するためので、目標はなるだろうが、その代わり、私は、変数の/ etcに格納でき、ブラウザにJSONを送信する...

何ミドルウェアが行うことは、JavaScriptでのアノテーションに基づいてルートを生成していますファイル。私はユニットテストをしたいと思い

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

はあなたがテスト/ルート/ **/*

app.use(loader)の下で上記のURLで見ることができますJSON応答がすべてのルートをロードするテストが含ま

以下は

現在モカテストはコメント

// 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

シェア...スニペットの下にしてくださいを参照してください。何を試しましたか?モックを使ってみましたか? –

+0

提供されています - ルータのインスタンスをログアウトしました/ etc cantが何かを見つけるのを助けるためにエクスプレスapi thoにあまりにも多くを掘り込まないでください。 –

+0

Postmanを見てください。事前定義されたjsonを使用してエンドポイント/ apiをテストすることができます。テストケースはJSで記述することができます。 –

答えて

0

感謝です!仕事を得るためにsupertestを使用して終了

https://github.com/visionmedia/supertest

は、いくつかのコードは

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; 
    });