Как мне написать тест для этой функции отмены?

#typescript #testing

Вопрос:

Библиотека тестирования, используемая здесь, — это открытые веб-компоненты, основанные на Мокко и Чае.

У меня возникли проблемы с тестированием этой debounce функции, так как я новичок в тестировании и, похоже, не совсем понимаю, что нужно тестировать. Я пытаюсь проверить, что result переменная будет обновляться по истечении этого debounce периода, но ничего из того, что я пытаюсь , кажется, не работает ( sync/await , promises , timeouts , вы называете это).

Следующее проходит, но я знаю, что это ложноположительный результат, так как ожидаемое значение может быть любым, где оно проходит.

Отменить:

 export function debounce(func: { (...args: unknown[]): void }, wait: number) {
    let timeout: NodeJS.Timeout
  
    return function executedFunction(...args: unknown[]) {
        const later = () => {
            clearTimeout(timeout)
            func(...args)
        }
        
        clearTimeout(timeout)
        timeout = setTimeout(later, wait)
    }
}
 

Тесты:

 import { expect } from '@open-wc/testing'

import { debounce } from './utils'

describe('debounce()', () => {
    it('Executes callback after wait period.', (done) => {
        const waitTime = 250
        let result = false

        debounce(() => {
            result = true
            expect(result).to.equal(true)
        }, waitTime)

        setTimeout(done, waitTime * 2)
    })
})

 

Любая помощь будет глубоко признательна.