Mocha/Chai テストで「expect.to.throw」がスローされたエラーをキャッチできないのはなぜですか?

Linda Hamilton
リリース: 2024-11-17 11:53:01
オリジナル
795 人が閲覧しました

Why Does `expect.to.throw` Fail to Catch Thrown Errors in Mocha/Chai Tests?

Mocha / Chai Expect.to.throw がスローされたエラーをキャッチしない?

node.js テストで、Chai の Expect.to を利用する際に問題が発生しています。 .throw スローされたエラーを検出します。テストは一貫して失敗し、スローされたエラーが報告されます。ただし、テストを try-catch ブロックにカプセル化し、キャプチャされたエラーに対してアサートすると、テストは合格します。

expect.to.throw は期待どおりに機能していませんか?

この問題を解決するには、関数の結果ではなく、期待する関数を渡す必要があります。 call:

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.'));
ログイン後にコピー

元のアプローチでは、model.get('z') を呼び出した結果を期待するものとして渡していました。関数がエラーをスローするかどうかをテストするには、それ自体を呼び出すことを期待する関数を提供する必要があります。バインド メソッドは、呼び出されると、予期される引数を指定して model.get を呼び出す新しい関数を作成します。

バインド メソッドの詳細については、提供されているドキュメントを参照してください。

以上がMocha/Chai テストで「expect.to.throw」がスローされたエラーをキャッチできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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