如何表明JasmineJS中的方法内部抛出异常?

时间:2012-11-09 09:03:50

标签: javascript bdd jasmine

在Junit测试中,我可以期待在测试中抛出异常,如下所示:

@Test(expect=SomeExceptino.class)
public void shouldThrowException(){
//test goes here.

}

如何使用JS和Jasmine执行此操作?

我有类似的东西:

function ActionDispatcher() {

    var actionHandlers = {};

    this.dispatch = function (action) {
        var actionHandler = actionHandlers[action.constructor];

        if (actionHandler == undefined) {
            throw new Error('not handler for action:' + action.constructor);
        } else {
            actionHandler.handle(action);
        }
    };
    }

如何编写期望派遣抛出异常的测试?

我正在监视行动Hanlders而不是经过测试的ActionDipatcher。我认为窥探你正在测试的对象是荒谬的。

1 个答案:

答案 0 :(得分:1)

Jasmine有一个toThrow匹配器,允许您测试异常。您可以像这样使用它:

it("throws", function() {
  var dispatcher = new ActionDispatcher();
  expect(function() {
    dispatcher.dispatch({constructor: 'constructor'});
  }).toThrow(new Error('not handler for action: constructor'));
});