关闭

如何用QUnit来测试JavaScript代码

发表于:2011-5-16 11:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:cyq1984    来源:51Testing软件测试网采编

  你可以通过延时去stop(),它告知QUnit,“如果start()在延时后没有被调用,你应未通过测试”。你可以确认的是整个测试没有挂起而且如果哪里出了问题你可以注意到。

  那么多个异步函数呢?你在哪里放置start()?可把它放在setTimeout()里:

view plaincopy to clipboardprint?
// A custom function    
function ajax(successCallback) {    
    $.ajax({    
        url: 'server.php',    
        success: successCallback    
    });    
}    
    
test('asynchronous test', function() {    
    // Pause the test    
    stop();    
    
    ajax(function() {    
        // ...asynchronous assertions    
    })    
    
    ajax(function() {    
        // ...asynchronous assertions    
    })    
    
    setTimeout(function() {    
        start();    
    }, 2000);    
})

  延时应该适当的长足够来允许二者的回调函数在测试继续执行前被调用。但是如果其中一个回调函数没有被调用怎么办?你怎样去知道?这就是expect()加入的原因:

view plaincopy to clipboardprint?
// A custom function    
function ajax(successCallback) {    
    $.ajax({    
        url: 'server.php',    
        success: successCallback    
    });    
}    
    
test('asynchronous test', function() {    
    // Pause the test    
    stop();    
    
    // Tell QUnit that you expect three assertions to run    
    expect(3);    
    
    ajax(function() {    
        ok(true);    
    })    
    
    ajax(function() {    
        ok(true);    
        ok(true);    
    })    
    
    setTimeout(function() {    
        start();    
    }, 2000);    
})

  你给expect()传一个数字告知QUnit你期望X个断言去执行,如果一个断言未被执行,这个数字将不会匹配,而且你瘵会注意到有些东西出错了。

  这仍有一个expect()的捷径:你只需给test()或asyncTest()的第二个参数传递一个数字:

view plaincopy to clipboardprint?
// A custom function    
function ajax(successCallback) {    
    $.ajax({    
        url: 'server.php',    
        success: successCallback    
    });    
}    
    
// Tell QUnit that you expect three assertion to run    
test('asynchronous test', 3, function() {    
    // Pause the test    
    stop();    
    
    ajax(function() {    
        ok(true);    
    })    
    
    ajax(function() {    
        ok(true);    
        ok(true);    
    })    
    
    setTimeout(function() {    
        start();    
    }, 2000);    
})

  总结

  这就是开始使用QUnit所需要了解的全部内容。单元测试是一个在发布代码前进行测试的非常好的方法。如果以前没有写过任何的单元测试,现在是时候开始了!多谢阅读!

66/6<123456
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号