【问题标题】:How to test custom assertions in QUnit如何在 QUnit 中测试自定义断言
【发布时间】:2016-08-21 13:05:20
【问题描述】:

我想测试我为 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() 来演示测试的样子。

【问题讨论】:

    标签: javascript qunit


    【解决方案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 );
    } );
    

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多