web-dev-qa-db-ja.com

Mocha / Chaiを使用したJS例外のテスト

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

私はここで何が間違っていますか?

25
TheDelChop

これはおそらく、関数をすぐに実行しているためで、テストフレームワークはエラーを処理できません。

次のようなものを試してください:

chai.expect(manager.test.bind(manager)).to.throw('Oh no')

関数内でthisキーワードを使用していないことがわかっている場合は、manager.testバインドせずに。

また、テスト名はコードの動作を反映していません。新しいインスタンスの構築が完了しない場合、manager = new window.VisualizationsManagerは失敗するはずです。

23
plalx

関数を渡すか

chai.expect(manager.test).to.throw('Oh no');

または匿名関数を使用します

chai.expect(() => manager.test()).to.throw('Oh no');

詳細については、 throwメソッドのドキュメント を参照してください。

37
Idan Wender