我正在尝试编写一个简单的测试 -
describe("My test", function(){
it("Succeed", function*(done){
yield testFunc();
done()
})
})
function *testFunc(){
console.log("Hey!")
}
请注意,我正在使用 co-mocha 以便我的生成器将被执行。
我得到的错误是 -
Error: Resolution method is overspecified. Specify a callback *or* return a Promise; not both.
现在,文档明确指出 -
when a test injects a callback function (suggesting asynchronous execution), calls it, and returns a Promise, Mocha will now throw an exception
https://github.com/mochajs/mocha/blob/master/CHANGELOG.md#boom-breaking-changes
但是,我没有返回 Promise! 我正在注入(inject)作为回调的 done
函数,但我没有返回 Promise...产生 testFunc 不会返回 Promise。
那么,为什么这个测试会抛出错误?
谢谢
最佳答案
生成器 (function*
) 或者更确切地说,它是隐式的协程创建包装器,很可能返回一个 promise 。我不太确定 co-mocha
在这里是如何工作的,但也许这会起作用:
describe("My test", function () {
it("Succeed", function* () {
yield testFunc();
return;
});
});
此处不需要返回,只是为了清楚起见而添加。
但您可能需要更改:
function *testFunc(){
console.log("Hey!")
}
类似于:
let testFunc = co.wrap(function* () {
console.log("Hey!");
});
让你的 yield
在上面的代码中工作。
如果您使用 co
协程,那么您的生成器应该产生 promise 。在这里,生成器产生运行生成器函数的结果,生成器函数本身返回生成器,而不是 promise 。
关于javascript - Mocha 抛出 "Resolution method is overspecified",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42091932/