Mocha の Expect.to.throw でスローされたエラーが見つからないという問題
Chai の Expect.to.throw を利用してノードの例外をテストする場合.js アプリケーションを実行すると、予期しない結果が発生する可能性があります。キャッチされないエラーが原因でテストが失敗したが、テストを try...catch でラップし、キャッチされたエラーが成功したと主張する場合、expect.to.throw の機能に疑問を抱くかもしれません。
問題の核心は、expect.to.throw の動作方法にあります。例外の発生を効果的にテストするには、入力として関数が必要です。関数を Expect に渡すことで、その関数を呼び出し、例外が発生したかどうかを確認できます。
提供されたコード スニペットでは、model.get('z') の結果を Expect に直接渡しています。 。ただし、このアプローチでは、関数自体ではなく関数の戻り値が渡されます。これを修正するには、呼び出されたときにmodel.getを実行する関数をexpectで指定する必要があります。
更新されたコード:
expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.'); expect(model.get.bind(model, 'z')).to.throw(new Error('Property does not exist in model schema.'));
bindメソッドを使用することで、新しい関数が作成されます。呼び出されると、指定された引数を使用してmodel.getを呼び出し、それによってmodel.get('z')の実行をシミュレートします。これにより、expect.to.throw は関数の実行中に例外がスローされるかどうかを評価できるようになります。
以上がMocha の Expect.to.throw が予期されたエラーをキャッチできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。