1

我在 QUnit 中定义了几个测试用例。最后一个测试用例使用window.open函数在新窗口中打开一个特定的 URL,并将新打开的页面的 body 标记的 html 内容附加到当前页面的(正在运行测试的)body 标记。此外,我需要在所有其他测试用例执行的最后执行该测试用例。我可以通过将属性QUnit.config.reorder设置为false来做到这一点。

问题在于我需要等到新页面在新窗口中加载,然后再复制正文 html(因为页面加载需要时间)。为此,我使用setTimeout在 3000 毫秒后获取 body 标记的 html 内容,但同时 QUnit 未能通过测试用例,因为断言存在于 setTimeOut 处理函数中。

4

3 回答 3

4
asyncTest('my test', function() {

    // some prep. code goes here (may go here)

    setTimeout(function() {
        start(); // this would tell QUnit to start the test

        // test code goes here

    }, 3000);
});
于 2012-10-29T12:59:00.077 回答
2

阅读文档asyncTest( name, [expected], test )

于 2012-10-29T12:56:41.143 回答
1

您可以将 Qunit 测试与异步断言一起使用,例如:

    QUnit.test( "post an object for dup detection ", function( assert ) {        
        var done = assert.async();
        $.ajax({
            method : "POST",
            url : ... ,
            data : ... ,
            dataType : "json"
        }).done( function( data, textStatus, jqXHR){ 
            assert.whatever(); 
            done();
        }).fail(function(jqXHR, textStatus, errorThrown){
            assert.notOk();
            console.log(errorThrown);
            done();
        });        
  });
于 2015-09-09T10:51:44.540 回答