2016-07-18 22 views
3

Expressを使用してNodeJSアプリケーションを作成し、外部APIへの呼び出しをプロキシしました。だから私はモカとシノンを使ってユニットテストを書こうとしています。私の目標はインターネット接続なしでアプリをテストすることで、httpsリクエストを模擬して模擬返信を返そうとしています。mochaとsinonを使用してノードでHTTPリクエストをモックする

私のケースに合った例やチュートリアルが見つからないという問題があります。私のノードのアプリケーションはポート8081でHTTP要求を待ち受けてから別のサイトにプロキシします。私は実際にそれらの外部サーバーに要求を送信することなく、私のアプリをテストしたいです。私はそれを下にしようとしていると私はserver.respondsWith()関数に返信したいjsonの返信を入れます。

私はチャイとアヤックスコールをすることでこれを正しくやっていますか?または私は何とか私のアプリの中で要求を送信する必要があります。どんな助けもありがとうございます。

var assert = require('assert'); 
var chai = require('chai'); 
var spies = require('chai-spies'); 
var chaiHttp = require('chai-http'); 
var https = require('https'); 
var should = chai.should(); 
var expect = chai.expect; 
var sinon = require('sinon'); 

chai.use(spies); 
chai.use(chaiHttp); 

describe('Car Repository', function() { 
    var server; 
    before(function() { 
    server = sinon.fakeServer.create(); 
    }); 

    after(function() { 
    server.restore(); 
    }); 

    var url = 'http://127.0.0.1:8081'; 
    it('should succeed and return a list of cars', function(done) { 
    server.respondWith('POST', 'https://api.sandbox.cars.com/v2/token_endpoint', JSON.stringify({"access_token":"1t3E4IykfpJAbuFsdfM2oFAo5raB5vhfOV0hAYe","token_type":"bearer","expires_in":604800})); 
    server.respondWith('GET', url+'/cars', JSON.stringify({'test':'this works'})); 

    chai.request(url) 
     .get('/cars') 
     .end(function(err, res) { 
     if (err) { 
      throw err; 
     } 

     res.should.have.status(200); 
     res.body.should.have.property('test'); 
     console.log(res.body); 

     done(); 
     }); 
    }); 
}); 

答えて

6

Nockライブラリを確認してください。それはまさにあなたが探しているものです。 Node.jsの

ノックが孤立してHTTPリクエストを実行するモジュールをテストするために使用することができるため

ノックは、HTTPモックであると期待ライブラリ。

たとえば、モジュールがCouchDBサーバーへのHTTP要求を実行したり、Amazon APIへのHTTP要求を行ったりする場合、そのモジュールを単独でテストできます。

+0

すごい男のノックは本当に素晴らしい見て、そのドキュメントは完璧です。私は今試してみるのに少し時間を費やすよ –

+0

それを試してみると、魅力のように働く。 –

関連する問題