4

Mocha 単体テストで assert.throws を使用しようとすると問題が発生します。

私はこの方法を持っています:

var getMetadatas = function (file, callback) {
  fs.readFile(file, {encoding: 'utf-8'}, function(err, data){
    // stuff
      if (somethingWentWrong) 
        throw new Error('Something went wrong')
    // callback call
  })
}

そして、私の単体テストでは、次のものがあります。

it('should throw an error when passing a bad formatted file', function(){ 
  assert.throws(
    getMetadatas('someBadFormattedFile', function(metadatas){})
  )
})

私が得る結果はランダムです.時々エラーがスローされ(私は得ましたUncaught Error: something went wrong)、テストは失敗し、時には合格します.

コールバックを介してエラーを渡すなど、他にもいくつか試しました。

var fn = function(){ 
  parse.getMetadatas('test/test_incorrect.md', function (err, metas) {
      if (err) throw err
  })
}
assert.throws( function() { fn() }, Error )

そして、私は出力として得ました:AssertionError: Missing expected exception (Error)..だから、彼は何も見ていないと思います...

assert.throws期待どおりに機能する唯一の方法は、同期関数を使用することです。

assert.throws(
  function () {throw new Error('error')}
)

で何かをしなければならないのではないかと思っていましたがdone()、コールバックで呼び出しても成功しませんでした。私は何か見落としてますか?

4

3 に答える 3