ホームページ > ウェブフロントエンド > jsチュートリアル > Mocha の Expect.to.throw が予期されたエラーをキャッチできないのはなぜですか?

Mocha の Expect.to.throw が予期されたエラーをキャッチできないのはなぜですか?

Linda Hamilton
リリース: 2024-11-24 03:29:09
オリジナル
962 人が閲覧しました

Why is Mocha's expect.to.throw Failing to Catch My Expected Errors?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート