mocha done() 和 async wait 的矛盾问题

2024-04-10

我有以下测试用例:

it("should pass the test", async function (done) {
        await asyncFunction();
        true.should.eq(true);
        done();
    });

运行它断言:

错误:解决方法指定过多。指定回调or返回一个 Promise;不是都。

如果我删除done();声明,它断言:

错误:超时超过 2000 毫秒。对于异步测试和挂钩,请确保 调用“done()”;如果返回 Promise,请确保它得到解决。

如何解决这个悖论呢?


您需要删除done参数也是如此,而不仅仅是对它的调用。像 Mocha 这样的测试框架会查看函数的参数列表(或至少其数量)来了解您是否正在使用done或类似的。

使用 Mocha 3.5.3,这对我有用(必须更改true.should.be(true) to assert.ok(true)因为前者抛出了错误):

const assert = require('assert');

function asyncFunction() {
    return new Promise(resolve => {
        setTimeout(resolve, 10);
    });
}

describe('Container', function() {
  describe('Foo', function() {
    it("should pass the test", async function () {
        await asyncFunction();
        assert.ok(true);
    });
  });
});

但如果我添加done:

describe('Container', function() {
  describe('Foo', function() {
    it("should pass the test", async function (done) {  // <==== Here
        await asyncFunction();
        assert.ok(true);
    });
  });
});

...然后我明白了

错误:超时超过 2000 毫秒。对于异步测试和挂钩,确保调用“done()”;如果返回 Promise,请确保它得到解决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mocha done() 和 async wait 的矛盾问题 的相关文章

  • Angular 2 Material 2 日期选择器日期格式

    我不知道如何更改材料2日期选择器的日期格式 我已阅读文档 但我不明白我实际上需要做什么 datepicker默认提供的输出日期格式为f e 6 9 2017 我想要实现的目标是将格式更改为类似的格式9 Jun 2017或任何其他 文档htt
  • 创建一个简单的 10 秒倒计时

    我想要一行这样写的 Your download will begin in 10 9 8 etc Beginning on page load seconds 我已经设置了 10 秒下载文本 并且我还查看了其他 stackoverflow
  • 打开 md-calendar 时滚动到当前日期

    目前正在构建一个使用 Angular Material 的应用程序 我们需要一个 md calendar 组件 我们想要自定义按钮样式和内容 因此不使用普通的 md datepicker 问题是 当 md calender 打开时 滚动位置
  • 单元测试报告的 XML 格式规范(DTD、XSD..)

    许多工具为单元测试报告生成和使用相同的 XML 文件格式 例子 source http junitpdfreport cvs sourceforge net junitpdfreport src resources examples tes
  • FakeAsync/tick (Async/whenStable) 与 detectorChanges()

    您能帮我区分这两件事吗 根据我的理解 如果你只使用 observable 你可以使用 detectorChanges 因此 您可以直接更改组件属性或监视服务调用并返回可观察的值 然后调用 detectorChanges 更改将在 html
  • 启用/禁用由用户输入确定的复选框

    我有一个简单的表单 用户可以在其中输入他的联系号码 如果联系号码以 07 开头 则该复选框已启用 其他我需要禁用它的复选框 我已经编写了一些代码 但我面临的问题是 当用户键入 01 时 它会被禁用 但如果他们继续在 01 之后添加任何其他数
  • javascript jquery 使用脚本更改脚本的src

    我有一个 JavaScript 脚本 它有一个 src 元素 这个 src 是一个 url 我想使用 javascript 更改它 一次更改为其他内容 或者动态创建它 使用 javascript jquery 动态创建脚本元素的最佳方法是什
  • 如何以编程方式退出或关闭 Javascript UWP 应用程序? (Windows 10)

    我制作了一个游戏 它需要自己的退出按钮 我无法使用CoreApplication Exit https msdn microsoft com en us library windows apps windows applicationmod
  • 嵌套异步/等待 Nodejs

    似乎无法弄清楚为什么这对我不起作用 我有一个父函数 它对子加载进程执行 AWAIT LOAD 进程又调用另一个名为 LOADDATA 的 AWAIT 所以基本上是这样的 module exports async function try a
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • console.log() 显示同一对象属性的矛盾值

    我想我可能要疯了 我使用 console log 来查看对象的状态 然后在下一行对同一对象的特定属性执行 console log 并为每个属性获取不同的值 我正在使用的代码是 console log this pictures Items
  • Angular 2 获取当前路线

    所以我需要以某种方式检查我是否在主页上执行某些操作 而在其他页面上则不执行此操作 该组件也在所有页面上导入 如果我在主页上 如何检测该组件 Thanks 尝试这个 import Router from angular router expo
  • 如何检测元素内容何时发生变化

    我正在寻找一种方法来监视元素内动态填充 无页面重新加载 内容 以便我可以将类添加到另一个元素 到目前为止我有这个 HTML div class message container div class messages error span
  • 获取点击的的DOM路径

    HTML div class lol a class rightArrow href a div 伪代码 rightArrow click function rightArrowParents this dom dom is the pse
  • 使用日期字符串数组在引导日期选择器中设置禁用月份不起作用

    我有一个日期选择器 其配置如下 HTML div class input group date div
  • 如何在 ASP.NET MVC 3 的 Razor 视图中编码嵌入的 javascript?

    如何在以下上下文中正确编码 JavaScript 我的 JSON 对象中的值是由应用程序管理员设置的 因此我假设它们需要正确编码 对于 HTML 和 JavaScript 都是如此 我在用着System Web Script Seriali
  • 如何处理requireJs超时错误?

    我正在使用 require js 作为加载框架编写一个移动混合应用程序 我遇到加载错误的问题 我想做的是在设备离线且无法下载在屏幕上显示地图所需的 google 地图 API 脚本时设置后备解决方案 我得到的只是 Uncaught Erro
  • JavaScript 数组扩展语法的时间复杂度是多少?

    我想知道在 JavaScript 中使用数组扩展的时间复杂度是多少 是线性 O n 还是常数 O 1 下面的语法示例 let lar Math max nums 传播称为 Symbol iterator 有关对象的属性 对于数组 这将迭代数
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • Node npm 包抛出使用严格:全局发布和安装后未找到命令

    我正在尝试发布 npm 包 当我全局安装该包并尝试运行 cli 命令时 我收到此错误 nvm versions node v0 12 2 bin myPack line 1 use strict command not found nvm

随机推荐

  • 如何在 Swift 3 中将 UIImage 数组导出为电影?

    我需要导出一组UIImage并制作一部在图像前面放置一些文本的电影 如果可能的话还可以添加音乐 你能帮我提供代码吗 我只找到了一些东西Objective c和旧版本的Swift 这是我对这个问题发布的第一个答案 从 UIImage 创建电影
  • 鼠标悬停在表格行上显示表格单元格

    我有一张看起来像这样的桌子 table thead tr th Foo th th Bar th tr thead tbody tr class data td Info here td a a url here class edit gt
  • 是否有使用 EF 数据库优先方法来解释该主题的 Fluent API 教程?

    关于 Fluent API 的教程有很多 但它们都使用 Entity Framework Code First 代码示例进行解释 由于我不了解代码优先 您是否知道任何 Fluent API 教程可以使用 EF 数据库优先方法解释该主题 谢谢
  • 有没有办法使用 python 请求发送多部分/表单数据数组?

    假设有一个端点接受HTTP请求与multipart form data内容类型 以下是可接受的请求正文的示例 033392576939750140334380 Content Disposition form data name file
  • Django-Haystack 使用具有 IAM 凭证的 Amazon Elasticsearch 托管

    我希望使用 Amazon 的 Elasticsearch 服务器来支持 Django 数据库中长文本字段的搜索 然而 我也不想将此搜索暴露给那些没有登录并且不想通过模糊或某些 IP 限制策略来依赖安全性的人 除非它可以很好地与现有的 her
  • 核心数据并发`performBlockAndWait:` NSManagedObjectContext僵尸

    我发布的应用程序有以下崩溃报告 synchronizeMyWords方法从数据库中获取实体 使用主上下文父级创建私有队列上下文 最后保存结果 所有操作都在后台线程中进行 每次应用程序进入时都会调用此方法background and fore
  • 如何使用 geom_text() 标记 geom_bar(position = 'fill')

    经过相当长的一段时间搜索后 我没有找到解决我的问题的例子 如何使用 geom text 标记 geom bar position fill mydf data frame sample sample x LETTERS 1 3 size 1
  • 在 Linq to Entities 中编辑 DataGridView 单元格

    当我使用 Linq to Entities 将数据库中的数据绑定到 C 应用程序中的 DataGridView 时 我使 DataGridView 变为只读且无法编辑 是否可以编辑 DataGridView 中的数据以及保存在数据库中的更改
  • MLSLABEL Oracle 数据类型是什么?

    我在 Oracle 中遇到了一种奇怪的数据类型 称为MLSLABEL 它没有在数据类型文档中列出 并且仅对 可信预言机 无论是什么 有效 我能找到的文档是this http download oracle com docs cd B2835
  • MD5 输入/输出的最大长度

    可以进行 md5 哈希处理的字符串的最大长度是多少 或者 如果没有限制 如果有 md5 输出值的最大长度是多少 MD5 将任意长度的消息处理为 128 位的固定长度输出 通常表示为 32 个十六进制数字的序列
  • 在php中使用wkhtmltoimage

    当我在终端中使用 wkhtmltoimage 时 效果很好 但在php中使用时会出现一些问题 问题是 php代码 它有效 当我在终端中尝试相同的命令时 它也运行良好 但是当我尝试其他链接时 它无法正常工作
  • Flex、AIR:在指定文件夹中搜索 .pdf 文件

    我需要 ActionScriot 代码来解析给定文件夹并在其中搜索 txt 文件 任何链接或代码示例都会有所帮助 Adobe Flex 3 3 AIR 谢谢 斯里 There var docs File File documentsDire
  • 如何让 GIT 默认为我的主文件夹?

    我刚刚在连接到工作域的工作计算机 Windows 7 上安装了 GIT 当我启动 GIT bash 时 它从 H 开始 而不是在我的主文件夹中 我认为当我未连接到域时这可能是一个问题 因为 ssh 文件夹位于 H 而不是我的主文件夹 我已将
  • PHP 以指数形式输出数字

    当我输出一些双变量时 它们会使用 fwrite 以指数形式写入 我可以在 PHP 中设置一些默认值 每当显示 复制或存储 变量时它总是以十进制格式出现吗 准确地说 当我在包含双精度值 不是指数形式 的 json 字符串上使用 json de
  • Java中可以从构造函数中调用抽象方法吗? [复制]

    这个问题在这里已经有答案了 假设我有一个实现 Runnable 接口的抽象基类 public abstract class Base implements Runnable protected int param public Base f
  • Bootstrap 中心对齐下拉​​菜单

    我的页面中央有一个下拉按钮 但是当我单击下拉菜单时 实际的下拉部分仍然位于页面的左侧 有什么问题吗 HTML div class row div class col md 12 school options dropdown div cla
  • ManualResetEvent 处于等待状态时会消耗 cpu 吗?

    更具体地说 上下文切换的性能下降是否适用于处于等待状态的线程 在什么条件或情况下 ManualResetEvent 或 WaitHandle 可能会消耗资源 ManualResetEvent 没有等待状态 唯一可以等待 MRE 的是thre
  • 在 scikit-learn Pipeline 中插入或删除步骤

    是否可以删除或插入步骤sklearn pipeline Pipeline object 我正在尝试在 Pipeline 对象中有或没有一步进行网格搜索 想知道我是否可以在管道中插入或删除一个步骤 我看到在Pipeline源代码 有一个sel
  • 从 eclipse 的内部浏览器打开网站?

    谁能帮助我从 Eclipse 的内部 嵌入式 浏览器中打开网页 我正在与浏览器并行运行 Linux 平铺窗口管理器 和 Eclipse 3 7 2 这很痛苦 我希望它能够轻松地从我的代码中读取需求 同时读取代码 这可能是超级用户的问题 但它
  • mocha done() 和 async wait 的矛盾问题

    我有以下测试用例 it should pass the test async function done await asyncFunction true should eq true done 运行它断言 错误 解决方法指定过多 指定回调