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

标签 javascript jquery 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
});

关于javascript - 使用 Qunit 对 javascript 函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17123407/

相关文章:

如果子项中的条件为真,jQuery 将类添加到父项

javascript - JS 单元测试无需将整个 HTML 复制到单元测试中?

javascript - v-for ="n in 10"中的起始范围从零开始

javascript - 如何根据孤立角色进行拆分?

javascript - 使全宽图像以 div 为中心

javascript - 如何在特定事件后停止 window.scroll() ?

javascript - Javascript 在 Google App Script HTML 中不起作用

Javascript - 如何将给定文本显示为字符串

jquery - 如何对 jQuery 键盘事件进行单元测试?

testing - 使用 Karma 运行从外部 Web 服务器提供的 QUnit 测试