How can I test asynchronous code?
describe('how to test function with setTimeout', () => {
let sample = null
beforeEach(() => {
sample = jasmine.createSpy('sampleFunction')
jasmine.clock().install()
})
afterEach(() => {
jasmine.clock().uninstall()
})
it('is only invoked after 1000 milliseconds', () => {
setTimeout(sample, 1000)
jasmine.clock.tick(999)
expect(sample).not.toHaveBeenCalled()
jasmine.clock.tick(1)
expect(sample).toHaveBeenCalled()
})
})describe('how to test function with setInterval', () => {
let dummy = null
beforeEach(() => {
dummy = jasmine.createSpy('dummy')
jasmine.clock().install()
})
afterEach(() => {
jasmine.clock().uninstall()
})
it('checks to see number of times function is called', () => {
setInterval(dummy, 1000)
jasmine.clock().tick(999)
expect(dummy.calls.count()).toBe(0)
jasmine.clock().tick(1000)
expect(dummy.calls.count()).toBe(1)
jasmine.clock().tick(1)
expect(dummy.calls.count()).toBe(2)
})
})Last updated
Was this helpful?