QUnit,断言不通过?

3
抱歉,如果这很明显,但是在QUnit中是否有notOK或等效函数,如果我们想断言方法返回false?
我看不到在文档中否定OK的方法。
我尝试过:
!ok...

但是那并没有起作用。
5个回答

8
您可以使用:ok(!预期为假的方法)

我在寻找 notOk 断言的替代品时,刚好发现了这个答案。我希望能找到一个简单的 assert.false(),因为期望某些东西是 "false" 和期望某些东西 "不行" 是非常不同的(暗示失败-异常、拒绝的承诺等)。 - Brian

2
根据文档:
QUnit中最基本的断言是ok(),只需要一个参数。如果参数求值为true,则断言通过;否则,它将失败。
您可以通过编写一个表达式来验证方法是否返回false值,该表达式在方法返回false的情况下求值为true值,反之亦然。最简单的表达式是NOT运算符,在JavaScript中通过“!”表示。
test( "Test method returns false ", function() {
  ok( method() == false, "Method returned false" );
  // or using a the negation operator
  ok( !method(), "Method returned false" );
});

1

QUnit 1.18 开始,有一个专门的函数:

assert.notOk(valueToBeTested);

1
更好的方法是使用:
notOk(<something>);

因为这样会更具表现力,而不是直接陈述:

ok(!<something>);

不确定您上次查看QUnit文档是什么时候,但是现在有一个notOk(https://api.qunitjs.com/assert/notOk/)函数可供使用,建议使用它。 - Andrea Tomasini

0
如果这是你真正非常想要的东西,你可以使用 QUnit.extend() 来添加它:
QUnit.extend(QUnit.assert, {
    notOk: function (result, message) {
        message = message || (!result ? "okay" : "failed, expected argument to be falsey, was: " +
        QUnit.dump.parse(result));
        QUnit.push(!result, result, false, message);
    },
});

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