Javascript 如何指示在JasmineJS中从方法内部抛出异常?

Javascript 如何指示在JasmineJS中从方法内部抛出异常?,javascript,bdd,jasmine,Javascript,Bdd,Jasmine,在Junit测试中,我可以期望在测试中抛出一个异常,如下所示: @Test(expect=SomeExceptino.class) public void shouldThrowException(){ //test goes here. } 我怎样才能用JS和Jasmine做到这一点 我有点像: function ActionDispatcher() { var actionHandlers = {}; this.dispatch = function (action)

在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);
        }
    };
    }
如何编写期望分派引发异常的测试


我在监视action Hanlders,而不是经过测试的ActionDipatcher。我认为监视你正在测试的物体是荒谬的

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

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

试着用Try,捕捉函数中的语句。这是一个好主意,我现在就试试。我认为这可能会有所帮助。这真的奏效了。非常感谢。请发表一个答案,让我投赞成票。事实上不是这样!我想我得再检查一下。好的时候我会通知你:D