【问题标题】:Testing if JS method throws RangeError with QUnit用 QUnit 测试 JS 方法是否抛出 RangeError
【发布时间】:2014-10-18 12:39:56
【问题描述】:

我用 QUnit 库做了一些 Javascript 单元测试,然后我想测试方法是否抛出 RangeError。已经这样做了:

QUnit.test("Resolve slide animation from left", function( assert ) {
var myOwnCreator = new MyOwnCreator();
assert.equal(myOwnCreator.resolveAnimationType("slideSide", "show", "left"),
  "slide-left-in");
assert.equal(myOwnCreator.resolveAnimationType("slideSide", "hide", "left"),
  "slide-left-out");
assert.throws(myOwnCreator.resolveAnimationType("slideSide", "hide"), 
  new RangeError(),
  " If animation type is 'slideSide', you have to provide correct direction" 
  + "to identify animation properly, direction cannot be 'undefined'");
});

第一个和第二个测试通过了,因为由函数(,,slide-...")解析的动画类是可以的。但是第三个测试死了:

Died on test #3     at file...

因为它会抛出 RangeError。抛出 RangeError 没关系,但我不明白如何在单元测试中捕获它,以获取 ,,ok" 信息。如果我了解 QUnit 文档:QUnit throws documentation

我做的一切都很好:我传递了抛出错误的函数、预期错误的实例和预期的消息。如果有人决定帮助我,我会很高兴 - 提前谢谢你。

【问题讨论】:

    标签: javascript unit-testing assert qunit throws


    【解决方案1】:

    我自己找到了答案。而是调用函数:

    assert.throws(myOwnCreator.resolveAnimationType("slideSide", "hide"), 
      new RangeError()....
    

    我应该传递给调用我的函数的 assert.throws() 函数,如下所示:

    assert.throws(function(){
        myOwnCreator.resolveAnimationType("slideSide", "hide");
      }, 
      new RangeError(--message which function should throw in error--)...
    

    【讨论】:

    • 就是这样!很高兴你找到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    相关资源
    最近更新 更多