2017-11-17 4 views
0

나는 다음과 같은 두 가지 내가 몇 가지 재스민 테스트를 쓰고 있어요 기능이 다음과 같이재스민 테스트 요소는 페이드 아웃 경우

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); 
}); 

첫 번째 테스트 작업을 벌금. 그러나 hideSpinnerfadeOut으로 인해 두 번째 테스트가 실패합니다.

예를 들어 타임 아웃을 사용하도록 수정하려고했습니다.

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의 기본 제한 시간입니다.