javascript - 使用 QUnit 测试 JS 方法是否抛出 RangeError

标签 javascript unit-testing assert qunit throws

我用 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

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

最佳答案

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

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--)...

关于javascript - 使用 QUnit 测试 JS 方法是否抛出 RangeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26439824/

相关文章:

c++ - 为什么我不能使用 if 语句而不是在 C++ 中使用 assert?

javascript - CLNDR.js 上的自定义类

javascript - 如何根据 url 在 Meteor 中创建集合的新副本

unit-testing - 如何在 VS 2010 中指定单元测试结果的位置?

c++ - 断言释放 C++ 中的内存

从 C 中的 Assert 函数更改为 If 语句

php - 错误: Unterminated string literal

javascript - react ;如何收集用户状态输入并在提交时附加到新组件

c# - 有哪些工具可用于测试多线程 .net 代码?

c# - 在使用 Moq 和 AutoFixture 对 API 进行单元测试时模拟 HttpResponseMessage