我正在使用mocha.js和supertest.js来测试我的json服务器对express.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 {}
摩卡测试只是超时了。我猜这与查找异步并且测试不等待它完成的事实有关。我该如何解决这个问题?
答案 0 :(得分:3)
答案 1 :(得分: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()
)
现在一切都按预期工作,但我仍然想知道是否可以使用超级或誓言。