2015-09-04 2 views
0

Я хочу написать тест для моего setInterval и проверить, что окно предупреждения запущено со значением «pulse». Как мне это сделать? Я пробовал так много вариаций на этом, но не могу понять этого. Я предоставил код и файл спецификации. Я использую жасмин 2.0. Любая помощь приветствуется.как написать тест жасмина для setinterval внутри прототипа

countTimer.js

function CountTimer(timelength){ 
    this.timelength = timelength; 
    this.running = false; 
} 

CountTimer.prototype.start = function(){ 
    this.running = true; 
    setInterval(function() {alert('pulse')}, 2000); 
}; 
CountTimer.prototype.stop = function(){ 
    this.running = false; 
}; 

countTimerSpec.js

describe("Timer",function() { 
    var myTimer; 


    beforeEach(function() { 
    myTimer = new CountTimer(25); 
    }); 

... 

    it("start should run setInterval 'pulse' every 2 seconds via setInterval", function(){ 
    myTimer.start(); 

    //what goes here??? 

    expect(sut.callback).toHaveBeenCalled(); 
    }); 


}); 

ответ

1

Вы хотите использовать часы жасмин (перехватывает реальные часы и позволяет моделировать время, как вы хотите).

Проверьте жасминовую помощь - пример почти точно, что вы пытаетесь сделать. http://jasmine.github.io/2.3/introduction.html

Основные шаги (в тесте):

jasmine.clock().install(); 
myTimer.start(); 
jasmine.clock().tick(2001); //enough that your interval gets tripped 
expect(...) 
jasmine.clock().uninstall(); 
Смежные вопросы