是否有任何QUnit断言/函数测试数组中的元素是否存在

时间:2013-02-11 07:05:09

标签: javascript unit-testing qunit

我的Qunit函数中有一个预期输出数组。现在我想测试一下我的函数结果是否在这个数组中。

var a =new array('abc','cde','efg','mgh');

现在我的问题是,是否有任何可以为我做这个的QUnit断言/函数?

我知道通过一些JS编码,我创建了一个方法来检查这个,但我想只是为了OUnit !!!!

2 个答案:

答案 0 :(得分:5)

如果您使用的是JavaScript 1.6,则可以使用Array.indexOf

test("myFunction with expected value", function() {
    var expectedValues = ['abc','cde','efg','mgh'];
    ok(expectedValues.indexOf(myFunction()) !== -1, 'myFunction() should return an expected value');
});

如果您愿意,可以扩展QUnit以支持这些断言:

QUnit.extend(QUnit, {
    inArray: function (actual, expectedValues, message) {
        ok(expectedValues.indexOf(actual) !== -1, message);
    }
});

然后,您可以在测试中使用此自定义inArray()方法:

test("myFunction with expected value", function() {
    var expectedValues = ['abc','cde','efg','mgh'];
    QUnit.inArray(myFunction(), expectedValues, 'myFunction() should return an expected value');
});

我创建了a jsFiddle to show both options

答案 1 :(得分:0)

QUnit为此提供了deepEqual函数。 您可以使用它来比较数组:

var resultArray = myFunction();
deepEqual(["Expected", "array"], resultArray, "myFunction returned wrong Array");