Mocha/Chaiで例外をスローするコードをテストしようとしましたが、運がありません。テストしようとしている簡単なコードを次に示します。
class window.VisualizationsManager
test: ->
throw(new Error 'Oh no')
私のテストは次のとおりです。
describe 'VisualizationsManager', ->
it 'does not permit the construction of new instances', ->
manager = new window.VisualizationsManager
chai.expect(manager.test()).to.throw('Oh no')
ただし、仕様を実行すると、テストは失敗し、例外がスローされます。
Failure/Error: Oh no
私はここで何が間違っていますか?
これはおそらく、関数をすぐに実行しているためで、テストフレームワークはエラーを処理できません。
次のようなものを試してください:
chai.expect(manager.test.bind(manager)).to.throw('Oh no')
関数内でthis
キーワードを使用していないことがわかっている場合は、manager.test
バインドせずに。
また、テスト名はコードの動作を反映していません。新しいインスタンスの構築が完了しない場合、manager = new window.VisualizationsManager
は失敗するはずです。
関数を渡すか:
chai.expect(manager.test).to.throw('Oh no');
または匿名関数を使用します:
chai.expect(() => manager.test()).to.throw('Oh no');
詳細については、 throw
メソッドのドキュメント を参照してください。