我写了一个函数来创建有限制的工作人员,并创建一个工作人员队列,当池中的插槽空闲时将创建该队列。
这是方法
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
})
}
})
}
我想测试这个方法不会创建超过限制的 worker 。 我正在使用 SinonJS。
我的问题是:有没有办法对 new Worker()
进行 stub ,并在我的测试中加入类似 assert.callCount(myStub, limit)
的东西?
或者也许有更好的方法来测试已经创建了多少 worker?
最佳答案
您只需sinon.stub(window, 'Worker')
。
因此,您可以断言 window.Worker.callCount
或任何其他 sinon spy 指标。如果您希望一些经过测试的代码调用这些工作程序上的方法,您可能还想为这个新 stub 定义原型(prototype)。
在测试后记住 window.Worker.restore
。
(请注意,window.Worker
仅在浏览器环境中定义,在 Node 环境中,您必须创建伪造的 global.Worker
构造函数并使用 global
作为 sinon.stub
调用中的“容器”)
关于javascript - 如何 stub new Worker(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51359435/