如果元素淡出,茉莉花测试

时间:2017-11-17 11:23:04

标签: javascript jasmine

我有以下两个函数,我正在编写一些Jasmine测试:

var showSpinner = function () {
    $('#spinner').remove();
    $('<div id="spinner"><i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i></div>')
        .appendTo('body')
        .hide()
        .fadeIn();
};

var hideSpinner = function () {
    $('#spinner').fadeOut(function () {
        $(this).remove();
    });
};

我的测试如下:

it('show spinner', function () {
    showSpinner();
    expect($('#spinner').length).toEqual(1);
});

it('hide spinner', function () {
    hideSpinner();
    expect($('#spinner').length).toEqual(0);
});

第一次测试工作正常。但是由于fadeOut hideSpinner导致第二次测试失败。

我试图修改它以使用超时,例如

it('hide spinner', function () {
    hideSpinner();
    setTimeout(function () {
        expect($('#spinner').length).toEqual(0);
    }, 100);
});

但这导致测试通过,但警告没有期望......

我该如何测试?

1 个答案:

答案 0 :(得分:1)

您应该阅读Jasmine's Asynchronous Support

it('hide spinner', function(done) {
    hideSpinner();
    setTimeout(function() {
        expect($('#spinner').length).toEqual(0);
        done();
    }, 400);
});

400 ms是$.fadeOut的默认超时。