我对
使用Co库,我有一个带有
导入:
(值得注意的是,原始代码并不是我编写的。我只是添加了单元测试。)
function*
/yield
/yield*
以及单元测试都很陌生,所以我不确定为什么我的单元测试代码不工作。它使用sinon stubbing和mocha testing framework。我已经阅读了关于function*
/yield
/yield*
的资料,但对我来说仍然很困惑。使用Co库,我有一个带有
yield*
的function*
,它调用另一个function*
。我试图用sinon stub来模拟yield*
调用的function*
,但是stub返回undefined。如果只是yield
而不是yield*
,则stub会返回正确的响应。导入:
import * as name from './file';
调用原始生成器函数:
export const func = (a, b, c) => co(secondFunc.bind(this, a, b, c));
函数 secondFunc:
function* secondFunc(a, b, c) {
try {
const x = yield* name.get(a); // this is where x is undefined
// logic
return value;
} catch (err) {
// logic
}
}
单元测试:
const callback = sinon.stub(name, 'get');
callback.returns(new Promise((resolved, reject) => resolved(response)));
co(func("a", "b", "c")).then((value) => {
console.log(value);
done();
}).catch(done);
(值得注意的是,原始代码并不是我编写的。我只是添加了单元测试。)