2017-06-16 13 views
0

私はnock.backを使用していくつかのAPIコールをモックアウトしています。予期せぬ呼び出しが行われた場合、UnhandledPromiseRejectionWarningがコンソールに出力されますが、テストに合格し、残りのコンソール出力でこれらの警告が表示されなくなります。サイレントエラーではなく例外がスローされます。これはどうすればいいですか?ノードがUnhandledPromiseRejectionWarningのエラーをスローする方法

答えて

1

私は約束を使う方法がある:

function myFunction(){ 
    return new Promise((resolve, reject) -> { 
     try { 
      // Logic 
      resolve(logic) 
     } catch(e) { 
      reject('Provide your error message here -> ' + e) 
     } 
    }) 
} 

か!

function myFunction().then(// Calls the function defined previously 
    logic => { // Instead of logic you can write any other suitable variable name for success 
     console.log('Success case')  
    }, 
    error => { 
     console.log('myFunction() returned an error: ' + error) 
    } 
) 

UPD

あなたがここに見ていたことがありますか? https://nodejs.org/api/process.html#process_event_unhandledrejection Promiseからの拒否のキャッチがなく、WARNINGをキャッチしてコンソールにうまく出力するコードを提供しているときに、unhandledRejectionイベントが発生することについて説明しています。

(コピーペースト)

process.on('unhandledRejection', (reason, p) => { 
    console.log('Unhandled Rejection at:', p, 'reason:', reason); 
    // application specific logging, throwing an error, or other logic here 
}); 

Node.jsのは、1つのプロセスで実行されます。

+0

これはベストプラクティスですが、そのベストプラクティスに従わないとテストが失敗することがあります。 –

+1

あなたはここを見ましたか? https://nodejs.org/api/process.html#process_event_unhandledrejection Promiseからの拒否を受けておらず、基本的にWARNINGを捕捉するコードを与えるときに発生するunhandledRejectionイベントについて説明します。 – user4447655

+0

最初のスニペットは役に立ちません。プロミスのコンストラクタのコールバックの中に 'try' /' catch'は必要ありません – Bergi

関連する問題