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()
、コールバックで呼び出しても成功しませんでした。私は何か見落としてますか?