2016-12-02 8 views
0

私は既存のプロジェクトでjasmineとSupertestを使っています。JavaScriptは失敗機能を実行するためにどのように知っていますか?

let checkResult = require('./check-result'); 

it('should do something', function(done){ 
request 
     .post('/route') 
     .expect(results => { 
     expect(results).toBeTruthy(); 
     }) 
     .end(checkResult(done)); 
}); 

I console.log(done)は、私は次のような出力が得られます。{ [Function] fail: [Function] }以下

は、私たちのcheckResultモジュールです。

//check-result 
module.exports = function checkResult(done){ 
    return function(seeIfThereIsError){ 
    if(seeIfThereIsError){ 
     done.fail(seeIfThereIsError) 
    } else { 
     done() 
    } 
    } 
}; 

エラーが発生すると、if(seeIfThereIsError)ブロックが実行されます。

  1. checkResultdoneを渡すcheckResultseeIfThereIsError引数に返された関数がどのように

    を読み込まれますん:

    私は2つの質問がありますか?

    1. { [Function] fail: [Function] }の署名はどのように作成されますか?要するに

どのように私はこのすべてが一緒にどのように適合するかに取り組ん部品(構文)を理解するためにゼロから任意の例を作成することができますか?

答えて

1

checkResultseeIfThereIsError引数に返された関数が読み込まれますんかcheckResultdoneを渡しますか?

この関数はendに渡され、呼び出されます。私。 endは、関数に値を渡します。

{ [Function] fail: [Function] }署名作成されますされてどのように
request.end = function(callback) { 
    callback(false); 
}; 

:最も単純な形式では、それは次のようになりますか?

機能を表すconsole.logは、標準化されていません。この出力は、値が関数でもあるカスタムプロパティfailを持つ関数オブジェクトであることを伝えるだけです。

あなたは、このような値を自分で作成する場合、これはそれを行うことができる方法です:

function done() {} 
done.fail = function() {}; 

console.log(done)は、あなたが見た出力を与えるかどうかは、ブラウザや潜在的に他の実装固有の経験則に依存します。

関連する問題