2017-11-17 8 views
0

をフェードアウト場合、私は私はいくつかのジャスミンのテストを書いている次の2つの関数があります。ジャスミンのテスト要素が

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により、2番目のテストは失敗します。

タイムアウトを使用するように修正しようとしました。

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

しかし、それはテストに合格する原因となるが、何の期待を持っていないという警告と...

どのように私はこれをテストすることができますか?

答えて

1

あなたが読むべき約Jasmine's Asynchronous Support

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

400 MSは$.fadeOutのデフォルトのタイムアウトです。

関連する問題