有没有 QUnit 断言/函数来测试数组中是否存在元素?

4

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

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

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

我知道通过一些JS编码,我可以创建一个方法来检查这个问题,但我想特别针对OUnit!!!

2个回答

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');
});

我创建了一个 jsFiddle 来展示两种选项


0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接