为什么我会得到“错误:分辨率方法超标”?

升级后,摩卡甚至不能运行简单的testing,这里是代码

const assert = require('assert'); it('should complete this test', function (done) { return new Promise(function (resolve) { assert.ok(true); resolve(); }) .then(done); }); 

我从这里拿这个代码

我明白它现在抛出一个exceptionError: Resolution method is overspecified. Specify a callback * or * return a Promise; not both. Error: Resolution method is overspecified. Specify a callback * or * return a Promise; not both.

但如何使其工作? 我不明白。 我有

 node -v 6.9.4 mocha -v 3.2.0 

如何运行这个代码现在是一个新的和正确的格式?

放下
.then(done); 并用function(done)replacefunction(done) function()

你正在返回一个Promise,所以调用done是多余的,就像它在错误信息中所说的那样

在老版本中,如果使用asynchronous方法,则必须使用callback

 it ('returns async', function(done) { callAsync() .then(function(result) { assert.ok(result); done(); }); }) 

现在你有一个select返回一个承诺

 it ('returns async', function() { return new Promise(function (resolve) { callAsync() .then(function(result) { assert.ok(result); resolve(); }); }); }) 

但是使用两者都是误导性的(参见https://github.com/mochajs/mocha/issues/2407

摩卡允许使用callback:

 it('should complete this test', function (done) { new Promise(function (resolve) { assert.ok(true); resolve(); }) .then(done); }); 

或者返回一个承诺:

 it('should complete this test', function () { return new Promise(function (resolve) { assert.ok(true); resolve(); }); }); 

你不能这样做。