Jestのtry / catchブロックからエラーを確認する方法

投票:

catchが処理すると確信できるエラーがある場合、Jestでtry / catchブロックをテストするにはどうすればよいですか?たとえば、別のファイルからトークンを読み取るためにこのコードをテストしたいと思います。キャッチをテストしたいのですが、問題は、Jestでエラーを処理するためにJestでシチュエーションを作成する方法がわからないことです。

const readToken = async () => {
try{
    const readFile = await fs.readFile('./apiData.json');
    const data = JSON.parse(readFile);
    
    return data.token;
    
}catch(err){
    throw err;
}
}

これは私のJestコードですが、正しく機能していません。カバレッジでcatch(err)の行がカバーされていないことを示しているためです。

        it('should return catch error',async (done) => {
        try{
          
           await readToken()
            done()
        }catch(e){
          done(e);
        }
      })
ダニーロ25:

あなたはfs.readFileそれをあなたにエラーを投げさせるためにモックすることができます:

  it('should handle a readFile error', async () => {
    jest.spyOn(fs, 'readFile')
     .mockImplementation(async () => { throw new Error('Some error'); });
    await expect(readToken()).rejects.toThrowError();
    fs.readFile.mockRestore()
  });
       

JSON.parseでも同じことができます。

  it('should handle a JSON.parse error', async () => {
    jest.spyOn(JSON, 'parse')
     .mockImplementation(() => { throw new Error('Some error'); });
    await expect(readToken()).rejects.toThrowError();
    JSON.parse.mockRestore()
  });
       

これらのテストはどちらも、catchブロックのコードを実行して、テストカバレッジを向上させます。エラーをcatchブロックで再度スローするのではなく、コンソールにログを記録する場合は、次のようにテストできます。

  it('should handle a readFile error', async () => {
    jest.spyOn(fs, 'readFile')
     .mockImplementation(() => { throw new Error('Some error'); });
    jest.spyOn(console, 'error')
     .mockImplementation();
    await readToken();
    expect(console.error).toHaveBeenCalled();
    jest.restoreAllMocks();
  });

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

関数のtry / exceptブロックでエラーが発生したかどうかを確認します

分類Dev

非同期関数内のtry / catchブロックでエラーをスローする方法は?

分類Dev

サブプロセスからのPopenがエラーをスローするかどうかを確認する方法

分類Dev

JESTテストケースでグローバルフェッチからの応答を確認する方法

分類Dev

await / async try / catchブロックをすべての関数にラップする方法はありますか?

分類Dev

PayPalクライアントIDとシークレットがサンドボックス環境からのものかライブ環境からのものかをプログラムで確認する方法はありますか?

分類Dev

/ dev / randomからの読み取りがブロックされるかどうかを確認する方法

分類Dev

/ dev / randomからの読み取りがブロックされるかどうかを確認する方法

分類Dev

try catchブロックでマングース接続エラーを処理する方法は?

分類Dev

エラーがNSErrorのサブクラスであるかどうかを確認する方法

分類Dev

Try Catchブロックの後に例外をスローする

分類Dev

リクエストがグーグル、フェイスブック、ツイッター、ビングクローラーからのものかどうかを確認するにはどうすればよいですか?

分類Dev

Jestモックからのフロータイプエラーを解決する方法

分類Dev

try ... catchブロックの使用を回避する方法

分類Dev

OVRInputModuleのOculusGoコントローラーがGUIオブジェクトをクリックしているかどうかを確認する方法

分類Dev

ネストされたtry / catchブロックを使用する場合の誤ったエラー処理

分類Dev

C ++のcatch(...)ブロックからエラーメッセージを取得するにはどうすればよいですか?

分類Dev

スコープの処理、uantityを変数に解決できないエラー、try-catchブロックを使用する場合の修正方法

分類Dev

cfcatchブロックのネイティブコードエラーを確認するにはどうすればよいですか?

分類Dev

どのWindowsファイアウォールルールがトラフィックをブロックしているかを確認する方法

分類Dev

try / catchを使用せずにオブジェクトに特定のキーがあるかどうかを確認する方法

分類Dev

forループの場合にtry / catchブロックを使用する正しい方法は何ですか?

分類Dev

スパイされている関数のcatchブロック内からJestにエラーがスローされることを正しく期待するにはどうすればよいですか?

分類Dev

効果的なkotlinの方法を使用してtry-catchブロックを使用せずにエラーを処理する

分類Dev

try catchブロックを使用せずにpromiseが拒否されたときに、複数の非同期待機でエラーを処理する方法は?

分類Dev

catchブロックがコンパイラエラーを生成するのはなぜですか?

分類Dev

どのグラフィックコントローラが使用されているかを確認する方法

分類Dev

try / catchブロックの代わりに.catchを使用する

分類Dev

変数を使用してcatchブロックのエラータイプを格納する方法は?

Related 関連記事

  1. 1

    関数のtry / exceptブロックでエラーが発生したかどうかを確認します

  2. 2

    非同期関数内のtry / catchブロックでエラーをスローする方法は?

  3. 3

    サブプロセスからのPopenがエラーをスローするかどうかを確認する方法

  4. 4

    JESTテストケースでグローバルフェッチからの応答を確認する方法

  5. 5

    await / async try / catchブロックをすべての関数にラップする方法はありますか?

  6. 6

    PayPalクライアントIDとシークレットがサンドボックス環境からのものかライブ環境からのものかをプログラムで確認する方法はありますか?

  7. 7

    / dev / randomからの読み取りがブロックされるかどうかを確認する方法

  8. 8

    / dev / randomからの読み取りがブロックされるかどうかを確認する方法

  9. 9

    try catchブロックでマングース接続エラーを処理する方法は?

  10. 10

    エラーがNSErrorのサブクラスであるかどうかを確認する方法

  11. 11

    Try Catchブロックの後に例外をスローする

  12. 12

    リクエストがグーグル、フェイスブック、ツイッター、ビングクローラーからのものかどうかを確認するにはどうすればよいですか?

  13. 13

    Jestモックからのフロータイプエラーを解決する方法

  14. 14

    try ... catchブロックの使用を回避する方法

  15. 15

    OVRInputModuleのOculusGoコントローラーがGUIオブジェクトをクリックしているかどうかを確認する方法

  16. 16

    ネストされたtry / catchブロックを使用する場合の誤ったエラー処理

  17. 17

    C ++のcatch(...)ブロックからエラーメッセージを取得するにはどうすればよいですか?

  18. 18

    スコープの処理、uantityを変数に解決できないエラー、try-catchブロックを使用する場合の修正方法

  19. 19

    cfcatchブロックのネイティブコードエラーを確認するにはどうすればよいですか?

  20. 20

    どのWindowsファイアウォールルールがトラフィックをブロックしているかを確認する方法

  21. 21

    try / catchを使用せずにオブジェクトに特定のキーがあるかどうかを確認する方法

  22. 22

    forループの場合にtry / catchブロックを使用する正しい方法は何ですか?

  23. 23

    スパイされている関数のcatchブロック内からJestにエラーがスローされることを正しく期待するにはどうすればよいですか?

  24. 24

    効果的なkotlinの方法を使用してtry-catchブロックを使用せずにエラーを処理する

  25. 25

    try catchブロックを使用せずにpromiseが拒否されたときに、複数の非同期待機でエラーを処理する方法は?

  26. 26

    catchブロックがコンパイラエラーを生成するのはなぜですか?

  27. 27

    どのグラフィックコントローラが使用されているかを確認する方法

  28. 28

    try / catchブロックの代わりに.catchを使用する

  29. 29

    変数を使用してcatchブロックのエラータイプを格納する方法は?

ホットタグ

アーカイブ