Я написал функцию, создающую рабочих с ограничением и создающую очередь рабочих, которые будут созданы, когда слот в пуле будет бесплатным.
вот способ
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)
?
Или, может быть, есть лучший способ проверить, сколько рабочих было создано?
Вы просто sinon.stub(window, 'Worker')
.
Благодаря этому вы можете утверждать на window.Worker.callCount
или любых других индикаторах sinon spy. Вы также можете определить прототип для этой новой заглушки, если вы ожидаете, что какой-либо проверенный код вызовет методы для этих рабочих.
Помните о window.Worker.restore
после теста.
(Обратите внимание, что window.Worker
определяется только в браузере env, в Node env вы должны создать поддельный конструктор global.Worker
и использовать global
как "контейнер" в вызове sinon.stub
)