2014-04-25 84 views
0

我使用MOCHA來測試一些表達框架代碼。連接ECONMREFUSED時使用MOCHA SUPERESTEST一個快速應用程序

我寫了一個簡單的MOCHA代碼來測試響應頭中返回的消息。代碼起作用。這也意味着我連接到服務器,並且我可以從數據庫獲取文件

現在,我想用「SuperTest」來做同樣的事情。但是,我得到 「錯誤:連接ECONMREFUSED」

這裏是我的代碼:

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

var app = express(); 

describe('GET /core/dbq/534e930204dd311822ec1c9d', function() { 
    this.timeout(15000); 
    it ('Check header message', function(done) { 
     request(app) 
     .get('http://localhost:3001/ecrud/v1/core/dbq/534e930204dd311822ec1c9d') 
     .expect('warning', '100 Max Record Limit Exceeded') 
     .expect('Content-Type', /json/) 
     .expect(200, done); 
    }) 
}) 

,並顯示在控制檯上的錯誤是:

1) GET /core/dbq/534e930204dd311822ec1c9d Check header message: 
    Error: connect ECONNREFUSED 
    at errnoException (net.js:901:11) 
    at Object.afterConnect [as oncomplete] (net.js:892:19) 

我學習使用 「SuperTest」 。請幫忙。謝謝。

回答

0

Supertest在隨機端口上啓動應用程序,併爲您填充URL的主機端口部分。你的代碼只能提供路徑(和查詢)部分。

request(app) 
    .get('/ecrud/v1/core/dbq/534e930204dd311822ec1c9d') 
    // etc. 
    .expect(200, done); 

或者,您可以在運行測試之前自行啓動應用程序。

describe('GET /core/dbq/534e930204dd311822ec1c9d', function() { 
    this.timeout(15000); 
    before(function(done) { 
    app.listen(3001, function() { done(); }); 
    }); 

    it ('Check header message', function(done) { 
    request(app) 
     .get('http://localhost:3001/ecrud/v1/core/dbq/534e930204dd311822ec1c9d') 
     // etc. 
    }); 
}); 

我會強烈建議用第一種方法去,否則你的測試可以與其他應用程序偵聽端口3001

交鋒
相關問題