Как заглушить нового работника ()

1

Я написал функцию, создающую рабочих с ограничением и создающую очередь рабочих, которые будут созданы, когда слот в пуле будет бесплатным.

вот способ

export function getWorker(path: string): Promise<Worker> {
    return new Promise((resolve, reject) => {
        if (pool.length < limit) {
            const worker = new Worker(path)
            pool.push(worker)
            resolve(worker)
        } else {
            queue.push({
                resolve,
                path
            })
        }
    })
}

Я хочу проверить, что этот метод не создает больше работников, чем лимит. Я использую SinonJS.

Мой вопрос: есть ли способ заглушить new Worker() и что-то в моем тесте, например assert.callCount(myStub, limit)?

Или, может быть, есть лучший способ проверить, сколько рабочих было создано?

Теги:
unit-testing
sinon
assert

1 ответ

0

Вы просто sinon.stub(window, 'Worker').

Благодаря этому вы можете утверждать на window.Worker.callCount или любых других индикаторах sinon spy. Вы также можете определить прототип для этой новой заглушки, если вы ожидаете, что какой-либо проверенный код вызовет методы для этих рабочих.

Помните о window.Worker.restore после теста.

(Обратите внимание, что window.Worker определяется только в браузере env, в Node env вы должны создать поддельный конструктор global.Worker и использовать global как "контейнер" в вызове sinon.stub)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню