mocha中的异步函数 before() 总是在 it() 规范之前完成?

2023-12-04

我有一个回调函数before()这是为了清理数据库。 一切都在before()保证在之前完成it()开始?

before(function(){
   db.collection('user').remove({}, function(res){}); // is it guaranteed to finish before it()? 
});

it('test spec', function(done){
  // do the test
});

after(function(){
});

对于新的摩卡版本:

您现在可以向 mocha 返回一个承诺,mocha 将等待它完成然后再继续。例如,以下测试将通过:

let a = 0;
before(() => {
  return new Promise((resolve) => {
    setTimeout(() => {
      a = 1;
      resolve();
    }, 200);
  });
});
it('a should be set to 1', () => {
  assert(a === 1);
});

你可以找到文档here

对于较旧的摩卡版本:

如果您希望异步请求在其他所有事情发生之前完成,您需要使用done之前请求中的参数,并在回调中调用它。

摩卡将等到done被调用以开始处理以下块。

before(function (done) {
   db.collection('user').remove({}, function (res) { done(); }); // It is now guaranteed to finish before 'it' starts.
})

it('test spec', function (done) {
  // execute test
});

after(function() {});

不过,您应该小心,因为不存根数据库进行单元测试可能会严重减慢执行速度,因为与简单的代码执行相比,数据库中的请求可能会相当长。

欲了解更多信息,请参阅摩卡文档.

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

mocha中的异步函数 before() 总是在 it() 规范之前完成? 的相关文章

随机推荐

  • jQuery - 获取与所选输入的 id 具有相同名称的下一个元素

    首先 我想为这个可怕的标题道歉 但这是我能想到的总结我的问题的最好方式 目前 我使用jQuery检查的脚本blur on an input text 输入的文本值大于一定数量 如果没有 输入会突出显示红色 但我接下来想要做的是有一个 p 在
  • 为什么 SendInput() 不起作用?

    我想使用 SendInput 函数自动按下一些键 My code include stdafx h include
  • 如何解决“类型错误:“example”() 不带参数”错误?

    我根据我在 YouTube 上学到的有关类和对象的教程创建了一个简单的 MCQ 并将不同的 python 程序导入其中 以下是我创建的内容 这是我创建的类 class MCQ def int self prompt answer self
  • 如何使用javascript通过onclick隐藏div?

    我使用了 javascript 通过 onclick 显示 div 但是当我单击 div 外部时我想隐藏 div 如何在 JavaScript 中做到这一点 我正在使用 javascript 代码 a href function toggl
  • 应用程序的 Facebook 登录配置错误:Kindle Fire 集成问题

    我们在 Kindle Fire Android 应用程序上集成了 Facebook 登录 大多数时候它都可以正常工作 但有时对于某些用户来说 当他们尝试使用 facebook 登录进行注册时 会失败并显示错误 APp 的 facebook
  • C# 中的动态 Where 子句 lambda

    我有一个如下所示的搜索表单 表单背后的代码如下所示 using Html BeginForm Html ValidationSummary div Html DropDownList SelectedType Model TypeOptio
  • 在 fb_var_screeninfo 中设置 yres_virtual 时出现无效参数错误

    我正在尝试为 Linux 创建一个直接写入帧缓冲区 dev fb0 的应用程序 为了使其成为双缓冲 我尝试使虚拟屏幕成为屏幕大小的两倍 这是我写的程序 struct fb var screeninfo screeninfo var stru
  • nhibernate 审核更新事件

    以下代码适用于插入但适用于更新modifier从未设置过 有什么想法吗 预更新代码正在运行 并将状态和实体值正确设置为所需值 但是 当查看生成的 sql 时 nhibernate 不会在更新查询中包含该字段
  • 我无法使用 iTextSharp 将“Page X of Y”等内容插入到我的 PDF 页脚中

    我是 iTextSharp 的新手 遇到以下情况 我正在创建一个包含页眉和页脚的 PDF 对于页眉和页脚的创建 我正在使用扩展的类 PdfPageEventHelper我已经覆盖了OnStartPage 和OnEndPage 方法 效果很好
  • 如何使用 PHP、MySql 借助 json 验证 Android 中的用户登录凭据

    我是安卓开发新手 我想使用 php mysql 和 json 进行登录验证 我只负责 PHP MySql 和 json 部分 如果用户在android应用程序中输入用户名和密码 那么它需要使用PHP和Mysql检查用户表 并且只需要使用js
  • MySQL根据最新时间戳选择记录组

    我有一个每隔几个小时运行一次的例程 它在用于记录的表中创建多个条目 我需要做的是选择所有最新的记录时间戳具有共同的帐户 ID 像这样的东西 SELECT FROM TABLE logs WHERE ACCOUNT ID 12345 ORDE
  • MYSQL/PHP 查找与给定项目关联的最常见项目

    我有数千个用户生成的物品愿望清单 桌子是这样的 collectionId itemdId user id 123 2345 1 123 3465 1 123 876 1 lt 123 567 1 123 980 1 lt 777 980 2
  • TypeScript 错误:重复的标识符“LibraryManagedAttributes”

    编译失败 moonholdings io node modules types react dom node modules types react index d ts 2312 14 重复的标识符 LibraryManagedAttri
  • 安装 mediapipe 库后 cv2 不起作用

    我想使用 python 制作 handtracker 程序 但教程告诉我安装 mediapipe 库 然后我安装了它 之前使用cv2传输我的相机是可以的 但是安装mediapipe之后 cv2不起作用 这里是消息 gt gt gt impo
  • 对已经排序的数组进行快速排序

    在这个问题中 https www quora com What is randomized quicksort 阿莱霍 豪斯纳 Alejo Hausner 说道 最坏情况下快速排序的成本 that 讽刺的是 如果您将快速排序应用于已经排序的
  • 自动生成 .NET 故障转储

    我知道如何使用 ADPlus 或 DebugDiag 生成故障转储文件 但我想知道是否有一种方法可以在客户的计算机上执行此操作而无需安装这些工具 具体来说 我希望能够配置我的应用程序 例如 使用注册表值 在发生严重故障时生成故障转储 更具体
  • 如何删除字符串的一部分?

    假设我有test 23我想删除test 我怎么做 前面的前缀 可以换 我最喜欢的方法是 拆分和弹出 var str test 23 alert str split pop gt 23 var str2 adifferenttest 153
  • 在 Eclipse Android 中导入 JAR (JAudioTagger)

    我正在开发一个加载 mp3 文件的歌曲数据的程序 我正在尝试导入 JAudioTagger 来帮助加载歌曲信息 JAudioTagger 是一个 jar 文件 我进入导入窗口 但面临许多我不确定的导入选项 看起来有三种可行的选择 EJB J
  • 如何创建项目模板

    关于自定义模板的主题 我正在自学如何使用 xcode 7 和 Objective C 来做到这一点 但我陷入了困境 到目前为止 通过阅读 S O 上的其他帖子我通过复制单视图应用程序并将其放入 xcode 包的正确目录中 成功创建了一个自定
  • mocha中的异步函数 before() 总是在 it() 规范之前完成?

    我有一个回调函数before 这是为了清理数据库 一切都在before 保证在之前完成it 开始 before function db collection user remove function res is it guaranteed