3

私はmocha.jsとsupertest.jsを使用して、express.jsでjsonサーバーのリクエストをテストしています。これらは私の輸入品です:

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 {}

モカテストがタイムアウトします。これは、検索が非同期であり、テストが完了するのを待たないという事実と関係があると思います。これを解決するにはどうすればよいですか?

4

2 に答える 2

3

タイムアウトを増やしてみてください:

mocha --timeout 5000

デフォルトは 2000 ミリ秒で、短すぎる可能性があります。ドキュメントから。

于 2012-09-19T19:27:14.893 に答える
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()
    )

現在、すべてが期待どおりに機能していますが、これにスーパーテストまたは誓いを使用できるかどうかを知りたいです。

于 2012-07-23T14:28:13.220 に答える