如何使用新的断言函数扩展QUnit?

z5h*_*z5h 7 javascript unit-testing qunit

我想向QUnit添加新的断言.我做了一件事:

QUnit.extend(QUnit.assert, {
  increases: function(measure, block, message){
    var before = measure();
    block();
    var after = measure();
    var passes = before < after;
    QUnit.push(passes, after, "< " + before, message);
  }
});
Run Code Online (Sandbox Code Playgroud)

当我increases(foo,bar,baz)在我的测试中使用时,我得到了

ReferenceError:未定义增量

从浏览器控制台,我可以看到increases在发现QUnit.assert以及所有其他标准功能:ok,equal,deepEqual等.

从控制台,运行:
test("foo", function(){console.log(ok) });
我看到的来源ok.

跑步:
test("foo", function(){console.log(increases) });
我被告知增加没有定义.

在测试中使用增加所需的魔力是什么?此外,哪里(如果有的话)是文件?

谢谢

z5h*_*z5h 5

我发现解决方案是在测试回调函数中接受一个参数.该参数将具有额外的断言类型.所以我们可以这样称呼它:

//the assert parameter accepted by the callback will contain the 'increases' assertion
test("adding 1 increases a number", function(assert){
    var number = 42;
    function measure(){return number;}
    function block(){number += 1;}
    assert.increases(measure, block);
});
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的方法.如果要通过全局引用(如其他QUnit断言)使用自定义断言,则必须将其显式添加到全局对象,通常是`window`. (3认同)