• Можно ли манипулировать временем через jasmine.clock() при тестировании асинхронных функций?

    @Alexis17842 Автор вопроса
    Я, кажется, нашел ответ на свой вопрос.

    Кому интересно, делюсь:
    describe("clock pollution", function() {
        var value;
    	it("async with clock", function(done) {
          jasmine.clock().install()
          setTimeout(function() {
            value = 1;
    		expect(value).toBeGreaterThan(0);
    		jasmine.clock().uninstall()
            done()
          }, 20000)
          jasmine.clock().tick(20001)
        })
    })


    Или вариант с промисами:

    function delay(ms) {
    	return new Promise(function(resolve, reject) {
    		setTimeout(resolve, ms)
    	})
    }
    
    describe("clock pollution", function() {
    	var value;
    	it("async with clock", function(done) {
    		jasmine.clock().install()
    		delay(2000)
    			.then(function() {
    				value = 1;
    				expect(value).toBeGreaterThan(0);
    				jasmine.clock().uninstall()
    				done()
    			})
    		jasmine.clock().tick(2001)
    	})
    })
    Ответ написан
    Комментировать