使用QUnit 2.x assert.async()来测试ajax调用

时间:2016-10-25 13:46:06

标签: javascript jquery ajax unit-testing qunit

我正在使用QUnit 2.0.1对现有代码库进行单元测试。我有一个函数,它进行ajax调用,然后启用一个按钮并设置一个布尔值。我正在尝试编写一个QUnit测试,断言在调用函数后按钮已启用且布尔值为false。

我使用ajax调用的函数:

self.saveComment = function() {     
    if(self.isEditing())
    {   
        $('#saveCommentButton').attr('disabled', 'disabled');

        var comment = self.newComment();            
        var data = {
                newCommentText : comment,
                objectId: objectId,
                objectType : objectTypeId
        };

        $.ajax({
            type: "POST",
            url: "addBOComment.action",
            data: data,
            success: function(comments){
                self.comments(comments);                    
                $('#saveCommentButton').attr('enabled', 'enabled');
                self.isEditing(false);                  
            }
        });         
    }
};

我的QUnit测试:

QUnit.test("test saveComment() - async", function(assert){      
    $('#qunit-fixture').append('<input type="button" id="saveCommentButton" disabled="disabled"/>')

    model.isEditing(true);
    model.newComment("qunit test for comments");

    var done = assert.async();

    window.setTimeout(function() {
     model.saveComment(); //function with ajax call
     assert.equal(model.isEditing(), false, 'success');
     assert.equal($('#saveCommentButton').attr("enabled"), "endabled", 'success');  
     done();

   }, 150);

});

测试运行,但是从未调用成功,因此我的按钮被禁用,我的布尔值仍然是真的。我做错了什么?

0 个答案:

没有答案