当前位置:  开发笔记 > 编程语言 > 正文

为什么我会收到"错误:解决方法被过度指定"?

如何解决《为什么我会收到"错误:解决方法被过度指定"?》经验,为你挑选了2个好方法。

升级后,Mocha甚至无法运行这里的简单测试代码

const assert = require('assert');

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

我从这里拿了这个代码

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

但是如何让它发挥作用?我不明白.我有

node -v 6.9.4

mocha -v 3.2.0

如何运行此代码现在采用新的正确格式?



1> Igor..:

刚落,
.then(done);并更换function(done)function()

你正在返回一个Promise,所以调用done是多余的,因为它在错误消息中说

在老版本中,你必须使用回调,以防异常方法

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

现在您可以选择返回Promise

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

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



2> Simon Boudri..:

Mocha允许使用回调:

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();
   });
});

// Or in the async manner
it('should complete this test', async () => {
    await Promise.resolve();
    assert.ok(true);
});

你不能两者都做。

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有