javascript – 断言功能会使用Qunit引发异常

前端之家收集整理的这篇文章主要介绍了javascript – 断言功能会使用Qunit引发异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Qunit和单元测试的新手.

我正在试图找出什么和如何测试以下功能.它目前没有做太多,但是我想断言,如果我传递错误错误值被抛出:

function attrToggle (panel,attr) {
    'use strict';

    if (!panel) { throw new Error('Panel is not defined'); }
    if (!attr) { throw new Error('Attr is not defined'); }
    if (typeof panel !== 'string') { throw new Error('Panel is not a string'); }
    if (typeof attr !== 'string') { throw new Error('Attr is not a string'); }
    if (arguments.length !== 2) { throw new Error('There should be only two arguments passed to this function')}

};

如果没有满足这些条件,我该如何断言会抛出错误

我试图看看库尼特的“提出”断言,但认为我误会了.我的解释是,如果抛出错误,测试通过.

所以如果我测试了这样的东西:

test("a test",function () {
    raises(function () {
        throw attrToggle([],[]);
    },attrToggle,"must throw error to pass");
});

测试应该通过,因为错误被抛出.

解决方法

一些事情错了,一个工作的例子是 http://jsfiddle.net/Z8QxA/1/

主要的问题是你把错误的东西作为第二个参数传递给了raise(). second argument用于验证正确的错误是否被抛出,因此它可能要求正则表达式,错误类型的构造函数或允许您进行自己的验证的回调.

所以在你的例子中,你正在传递attrToggle作为抛出的错误类型.你的代码实际上会抛出一个错误类型,所以检查实际上是失败的.传递错误作为第二个参数的工作原理:

test("a test",function () {
    raises(function () {
        attrToggle([],Error,"Must throw error to pass.");
});

其次,在raise()中调用attrToggle()时,不需要throw关键字.

猜你在找的JavaScript相关文章