如何在QUnit

时间:2016-08-21 13:05:20

标签: javascript qunit

我想测试我为QUnit编写的自定义断言。在QUnit home page它说它可以test its own assertions,但它只显示如何测试断言通过。即它似乎没有测试断言失败的条件。有没有什么方法可以捕获失败,并让它导致通过测试?

说我想测试this custom assertion

QUnit.assert.mod2 = function( value, expected, message ) {
    var actual = value % 2;
    this.pushResult( {
        result: actual === expected,
        actual: actual,
        expected: expected,
        message: message
    } );
};

上述断言可能会这样使用:

QUnit.test( "mod2", function( assert ) {
    assert.mod2( 2, 0, "2 % 2 == 0" );
    assert.mod2( 3, 1, "3 % 2 == 1" );
});

所以我想写一个测试来断言mod2测试按预期工作。

tests for QUnit assertions有以下内容测试.ok()断言在预期时通过:

QUnit.test( "ok", function( assert ) {
    assert.ok( true );
    assert.ok( 1 );
    assert.ok( "1" );
    assert.ok( Infinity );
    assert.ok( {} );
    assert.ok( [] );
} );

但是,如果断言成功失败,我该怎么测试?测试可能看起来像这样:

QUnit.test( "test assert.mod2", function( assert ) {
    assert.mod2( 2, 0, "2 % 2 == 0" );
    assert.fails (assert.mod2( 2, 1, "2 % 2 == 0" ));
    assert.mod2( 3, 1, "3 % 2 == 1" );
    assert.fails (assert.mod2( 3, 0, "3 % 2 == 1" ));
});

我已经编造.fails()来证明测试的样子。

1 个答案:

答案 0 :(得分:1)

根据source code

,可以这样做
QUnit.module( "failing assertions", {
    beforeEach: function( assert ) {
        var originalPushResult = assert.pushResult;
        assert.pushResult = function( resultInfo ) {

            // Inverts the result so we can test failing assertions
            resultInfo.result = !resultInfo.result;
            originalPushResult( resultInfo );
        };
    }
} );

QUnit.test( "ok", function( assert ) {
    assert.ok( false );
    assert.ok( 0 );
    assert.ok( "" );
    assert.ok( null );
    assert.ok( undefined );
    assert.ok( NaN );
} );