node.js - 为什么我得到 "Error: Resolution method is overspecified"?

标签 node.js mocha.js

升级后Mocha连简单的测试都跑不了这里是代码

const assert = require('assert');

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

我从 here 获取此代码

我知道它现在抛出异常 错误:解决方法被过度指定。指定回调 * 或 * 返回一个 Promise;不是两者都有。

但是如何让它工作呢?我不明白。我有

node -v 6.9.4

mocha -v 3.2.0

如何以新的正确格式运行这段代码?

最佳答案

放下
.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 )

关于node.js - 为什么我得到 "Error: Resolution method is overspecified"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761683/

相关文章:

node.js - Node-webkit 上的 Meteor 排行榜应用

node.js - 如何在AWS Elasticache中测试Redis的性能?

react-native - 排毒测试 - 如何禁用排毒信息记录到标准输出

javascript - 尝试使用 Mocha 测试时模型无法正确加载

typescript - 如何将测试添加到现有的 Typescript 项目,并让它显示在测试资源管理器中?

javascript - Chai 库中 .to 的用途是什么?

node.js - 服务器未收到客户端的鼠标移动数据

javascript - 使用 Cheerio 进行网页抓取 : Deleting or ignoring a child element?

node.js - 如何通过 Mocha 测试运行时参数?

javascript - 为什么传递的函数是否带参数对 Mocha 的 `before()` 很重要?