如何测试使用 CO 调用的生成器函数
How to test a generator function called using CO
这是对现实世界场景的简化:
我用三个 parameters.Two 整数和一个函数调用了生成器函数。第三个参数函数可以将两个整数相加。
//My add function
var fn = (a,b)=>a+b;
//My generator function
var genFn = function*(a,b,fn){
b = yield fn(a,b);
b = yield fn(a,b);
return b;
};
我有另一个函数,它使用 CO
包装生成器函数
//My wrapper function
var coGen = (a,b,fn)=>{
co(genFn.bind(null,a,b,fn))
};
在我的测试用例中,我想知道我的函数 "fn" 被调用了多少次。
我尝试使用 sinon Spy 来做到这一点。
var spy =sinon.spy(fn);
coGen(1,2,spy);
当我这样做并检查间谍上的 callCount 时,它总是 returns 1。
但实际上,间谍多次通过并被调用。当我在我的 genFn 函数中检查调用计数时,它给出了正确的计数。
我敢肯定,我没有以正确的方式进行测试。有人可以给我一些关于如何测试的想法吗?谢谢
我能够解决它。这是一个愚蠢的错误。我不认为很多人会做这个 mistake.Just 以防万一,如果有人感兴趣的话。
我测试的方式是错误的。 'co' returns 一个承诺。在 promise 的 'resolved' 方法中查找 callCount 将给出间谍的正确 callCount。
var spy =sinon.spy(fn);
coGen(1,2,spy).then(()=>assert(spy.callCount===2));//true
这是对现实世界场景的简化:
我用三个 parameters.Two 整数和一个函数调用了生成器函数。第三个参数函数可以将两个整数相加。
//My add function
var fn = (a,b)=>a+b;
//My generator function
var genFn = function*(a,b,fn){
b = yield fn(a,b);
b = yield fn(a,b);
return b;
};
我有另一个函数,它使用 CO
包装生成器函数//My wrapper function
var coGen = (a,b,fn)=>{
co(genFn.bind(null,a,b,fn))
};
在我的测试用例中,我想知道我的函数 "fn" 被调用了多少次。
我尝试使用 sinon Spy 来做到这一点。
var spy =sinon.spy(fn);
coGen(1,2,spy);
当我这样做并检查间谍上的 callCount 时,它总是 returns 1。 但实际上,间谍多次通过并被调用。当我在我的 genFn 函数中检查调用计数时,它给出了正确的计数。
我敢肯定,我没有以正确的方式进行测试。有人可以给我一些关于如何测试的想法吗?谢谢
我能够解决它。这是一个愚蠢的错误。我不认为很多人会做这个 mistake.Just 以防万一,如果有人感兴趣的话。 我测试的方式是错误的。 'co' returns 一个承诺。在 promise 的 'resolved' 方法中查找 callCount 将给出间谍的正确 callCount。
var spy =sinon.spy(fn);
coGen(1,2,spy).then(()=>assert(spy.callCount===2));//true