2012-07-23 194 views
3

我正在使用mocha.js和supertest.js來測試我的json服務器對express.js的請求。這是我進口:node.js摩卡測試請求

request = require('supertest') 
assert = require('assert') # Node assert 
app  = require('../app') # Vanilla express app 

這是我在明確應用要求執行:

app.get '/user/:id', (req, res) -> 
    res.json {} 

,這是我的測試:

describe 'GET /user/:id', -> 
    it 'should return the user data if user found', (done) -> 
    request(app) 
    .get("/user/some_id") 
    .end((err, res) -> 
     assert.equal('test', 'test') 
     done() 
    ) 

這工作,但如果我改變我要求:

app.get '/user/:id', (req, res) -> 
    User.findById req.param('id'), (err, doc) -> 
    res.json {} 

摩卡測試只是超時。我猜這與查找是異步的事實有關,測試不會等待它完成。我該如何解決這個問題?

回答

1

切換到https://github.com/mikeal/request/解決了它。我現在做

這是我現在的測試:

describe 'GET /user/:id', -> 
    it 'should return the user data if user found', (done) -> 
    request.get(
     'http://localhost:31000/user/500d365abb75e67d0c000006' 
     , (err, res, body) -> 
     json = JSON.parse body 
     assert.equal(res.statusCode, 200) 
     assert.equal(json._id, '500d365abb75e67d0c000006') 
     done() 
    ) 

一切工作爲目前預計,但我還是想知道它是否可以使用supertest或誓言此。

+0

我正在使用mikeal/request並且它不工作= [ – ThomasReggi 2014-01-18 22:26:23

+0

需要'done();'request內部=] – ThomasReggi 2014-01-18 22:27:58

3

嘗試增加超時:

mocha --timeout 5000 

默認爲2000毫秒,可能太短。從documentation