0

私は次のジャスミンのコンテキストとアサーションを持っています:

it "should return a javascript file", ->
  # We make a request to /x.js
  request {uri: 'http://localhost:3000/x.js'}, (err, res, body) ->
    expect(res.statusCode).toEqual 200

仕様を評価するためにJasmineに電話すると、アサーションが取得されません。どうすればアサーションをピックアップさせることができますか?

4

1 に答える 1

1

リクエストit()がレスポンスを返す前に終了しています。jasmine では、非同期イベントについて少し難しく考える必要があります。

これにより、コールバックが実行されるかwaitsFor()、デフォルトのタイムアウト期間が経過するまで仕様が終了しなくなります。

it "should return a javascript file", ->
  responded = no
  request {uri: 'http://localhost:3000/x.js'}, (err, res, body) ->
    responded = yes
    expect(res.statusCode).toEqual 200

  waitsFor -> responded

これにより、サーバーがタイムアウトした場合にもスペックが失敗します。これは、それぞれwaitsFor()が最終的に満たされることを期待しているためです。

于 2011-07-18T20:58:39.477 に答える