繁体   English   中英

使用Qunit对javascript函数进行单元测试

[英]Unit testing javascript function with Qunit

有可能创建一个可以测试ui方面的单元测试吗? 这是一个例子:

addMessage = function (type, message) {
        //success, error, info, block(alert)           
        $("body").append('<div id="messageCenter" class="alert alert-' + type + '" style="position: fixed; top: 0; width: 100%; text-align:center;">' + message + '</div>');
        setTimeout(function () {
            $("#messageCenter").fadeOut(500, function () {
                $("#messageCenter").remove();
            });
        }, 10000);

    }

这会在页面顶部创建一个消息栏,向用户显示一些信息。 有人可以帮我提供这个功能的单元测试示例吗? 提前致谢。

单元测试无法100%可靠地测试视觉元素,您应该始终手动确认它们是否有效,但总有一些事情可以做。 如果没有别的,那么为了完整性或代码覆盖。

首先描述函数应该做什么以及您希望测试覆盖什么。 例如:

  1. 消息将添加到页面中
  2. 邮件内容正确
  3. 容器具有与消息类型对应的类
  4. 10.5秒后,页面上不再显示该消息(超时+淡出)。

现在可以轻松编写针对特定要求的单元测试。

asyncTest( "Message bar functionality", function() {
    expect( 4 );

    addMessage( 'info', 'test' );
    equal( $( '#messageCenter' ).length, 1, "Div created" );
    equal( $( '#messageCenter.alert-info' ).length, 1, "Message has correct class" );
    equal( $( '#messageCenter' ).text(), 'test', "Message has correct content" );

    setTimeout( function() {
        equal( $( '#messageCenter' ).length, 0, "Message no longer visible after 11 seconds" );
        start();
    }, 11000 ); // 10500 might be too tight, 10600 would probably be fine too
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM