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