我编写了一个函数,该函数创建具有限制的工作程序,并创建工作程序队列,当队列中的插槽空闲时将创建该队列。
这是方法
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)
之类的东西?
或者也许有更好的方法来测试已经创建了多少工人?
答案 0 :(得分:0)
您只需sinon.stub(window, 'Worker')
。
为此,您可以在window.Worker.callCount
或任何其他sinon间谍指示器上进行断言。如果希望一些经过测试的代码可以调用这些工作程序中的方法,则可能还需要为此新存根定义原型。
请记住测试后的window.Worker.restore
。
(请注意,window.Worker
仅在浏览器环境中定义,在Node env中,您必须创建伪造的global.Worker
构造函数,并在global
中将sinon.stub
用作“容器”致电)