2015-04-28 2 views
0

У меня есть следующие функции:жасмин JQuery тестирование функции без параметров

function prompt_mandatory_field_completion(){ 
    $("#mandatory_fail").show(150, function() { 
     setTimeout(function() { 
      $("#mandatory_fail").fadeOut(500) 
     }, 2000); 
     }); 
    window.scrollTo(0,0) 
} 

То, что я хотел бы проверить с жасмином, но независимо от того, что я положил в мой файл спецификации тест, кажется, проходит.

Файл спецификации содержит следующий код:

it(' NEED TO FIX THAT FADE OUT Should prompt user to fill in mandatory questions via prompt_mandatory_field_completion function', function() { 
    prompt_mandatory_field_completion(); 
    setTimeout(2000, function(){ 
     expect($('#mandatory_fail').css('display').toEqual('random thing')); 
    }); 

В моей SpecRunner.html я использую следующую функцию, что я бегу в перед каждым испытанием в этом описании блока:

function setupFixtures(){ 
    setFixtures('<div id="mandatory_fail" style="display:none;"></div>'); 
    prompt_mandatory_field_completion(); 
    }; 

Любой Идея, как сделать это значимым тестом? Наверное, я слишком долго смотрел на нее и выталкивал ее со всех сторон.

Бест,

Адам

ответ

0

Вы пытаетесь написать функциональный тест асинхронного поведения. У вас может быть намного лучший опыт, пытаясь использовать транспортир для такого рода испытаний. Он настроен больше на утверждение вещей, которые будут в конечном итоге быть правдой.

Однако, жасмин имеет асинхронную установку с примерно 2,0, известную как done(), которая будет настаивать на том, чтобы весь асинхронный код работал до того, как тест прошел или завершился с ошибкой.

0

Вы должны передать функции done, чтобы получить асинхронные тесты:

it(' NEED TO FIX THAT FADE OUT Should prompt user to fill in mandatory questions via prompt_mandatory_field_completion function', function(done) { 
    prompt_mandatory_field_completion(); 
    setTimeout(2000, function(){ 
     expect($('#mandatory_fail').css('display').toEqual('random thing')); 
     done(); 
    }); 
}, 3000); 

Вы также можете передать тайм-аут в качестве последнего параметра, в зависимости от того, что вы установили в настройках жасмина.

В противном случае Жасмин рассмотрит этот тест, если его выполнение превысит его таймаут.

 Смежные вопросы

  • Нет связанных вопросов^_^