通过异步 JavaScript (Mocha) 进行循环测试

2023-12-08

我正在尝试使用 Mocha 测试异步 JavaScript,但在循环异步填充数组时遇到一些问题。

我的目标是创建 N (=arr.length) 测试,数组的每个元素一个。

可能我缺少一些关于摩卡语义的东西。

到目前为止,这是我的(非工作的)简化代码:

var arr = []

describe("Array test", function(){

    before(function(done){
        setTimeout(function(){
            for(var i = 0; i < 5; i++){
                arr.push(Math.floor(Math.random() * 10))
            }

            done();
        }, 1000);
    });

    it('Testing elements', function(){
        async.each(arr, function(el, cb){
            it("testing" + el, function(done){
                expect(el).to.be.a('number');
                done()
            })
            cb()
        })
    })
});

我收到的输出是:

  Array test
    ✓ Testing elements


  1 passing (1s)

我想要一个像这样的输出:

  Array test
      Testing elements
      ✓ testing3
      ✓ testing5
      ✓ testing7
      ✓ testing3
      ✓ testing1

  5 passing (1s)

关于如何写这个有任何帮助吗?


我让这个工作的唯一方法有点混乱(因为它需要一个虚拟测试;原因是你不能直接嵌套一个it()在另一个里面it(),它要求“父母”是describe(),你需要一个it()因为describe()不支持异步):

var expect = require('chai').expect;
var arr    = [];

describe('Array test', function() {

  before(function(done){
    setTimeout(function(){
      for (var i = 0; i < 5; i++){
        arr.push(Math.floor(Math.random() * 10));
      }
      done();
    }, 1000);
  });

  it('dummy', function(done) {
    describe('Testing elements', function() {
      arr.forEach(function(el) {
        it('testing' + el, function(done) {
          expect(el).to.be.a('number');
          done();
        });
      });
    });
    done();
  });

});

The dummy will最终出现在你的输出中。

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

通过异步 JavaScript (Mocha) 进行循环测试 的相关文章

  • JavaScript 支持逐字字符串吗?

    在 C 中 您可以像这样使用逐字字符串 server share file txt JavaScript中有类似的东西吗 模板字符串支持换行 so you can do this if you want https developer mo
  • jQuery JSONP ajax,未设置身份验证标头

    我正在尝试使用以下设置向 google 联系人 API 发出 ajax 请求 ajax url https www opensocial googleusercontent com api people me all dataType js
  • JavaScript 画布内存问题

    我在用着getImageData putImageData在 HTML5 画布上能够操作图片 我的问题是浏览器似乎从来没有释放任何内存 http jonelf posterous com lite gc men for sent 直到我关闭
  • Mozilla WebExtension API 存储 - 使用和不使用断点进行调试会导致不同的输出

    大家好 我正在尝试为 Mozilla Firefox 浏览器实现一个附加组件 以下脚本显示了我已经成功集成的一个后台脚本 它使用 Mozilla WebExtension API 存储 它被执行了 但浏览器控制台上的日志让我感到惊讶 我交替
  • 使用javascript滚动滚动条或鼠标滚轮后触发事件

    我想知道是否可以触发事件after使用滚动条或鼠标滚轮 或在触摸设备上滑动 时滚动页面 基本上 我想检测用户何时停止滚动 以便我可以进行 AJAX 加载 而不是在滚动时加载 看起来jQuery s scroll 每次用户滚动时都会触发 并且
  • 如何正确地将节点从引用传递到上下文?

    我正在尝试将节点从引用传递到上下文 但是因为我在第一次渲染后没有重新渲染 所以传递的节 点是null 我考虑了两种变体 但我认为它们不是最好的 To pass ref代替ref current 但在用例中 我将被迫使用类似的东西contex
  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • 无需重定向的 HTML 页面提交

    有没有什么方法可以在不使用ajax的情况下提交html表单而无需从当前页面重定向 你可以设置一个target 为您form 这样您就可以将表单提交到新选项卡 target blank 或一个小的 隐藏的iframe target nameo
  • 替换img路径jquery

    我正在尝试替换 jquery 中的 img 路径 注入远程页面 replaceexample com thumbs withexample com images 我已经尝试过这个 但似乎不起作用 img attr src replace t
  • 为某个时刻添加持续时间 (moment.js)

    时刻版本 2 0 0 阅读文档后 http momentjs com docs manipulating add 我认为这很简单 Chrome 控制台 var timestring1 2013 05 09T00 00 00Z var tim
  • 基于范围内变量的角度设置形式动作

    我一直在尝试设置一个搜索表单 可以在其中注入表单操作属性 在我的表格中我有
  • 为什么浏览器允许onmousedown JS改变href?

    我很长时间以来都注意到 当您尝试复制链接位置或在 Facebook 上打开链接时 它会修改链接并将其传递给l php 例如 我可以被发送到 http www facebook com l php u http 3A 2F 2Fwww goo
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • chrome 选项卡/窗口中的 window.open 行为

    我有一小段 javascript 旨在打开两个或更多选项卡 这在 FF 和 IE 中工作正常 但 chrome 会在新窗口而不是选项卡中打开第二个窗口 它不依赖于 url 因为我已经尝试过使用两个相同的 url 第一个在选项卡中打开 第二个
  • 如何捕获文本区域上的 Enter 按键而不是 Shift+Enter? [复制]

    这个问题在这里已经有答案了 I m doing it for texarea A function should be called when the user press Enter but nothing should be done
  • jQuery:向左滑动和向右滑动

    我见过slideUp and slideDown在 jQuery 中 左右滑动的功能 方式怎么样 您可以使用 jQuery UI 中的附加效果来做到这一点 详情请参阅此处 http docs jquery com UI Effects Sl
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • 使用严格模式编译指示时如何声明全局变量

    使用自调用函数来包装严格模式兼容代码 通常称为严格模式编译指示 被认为是一种很好的做法 function use strict Strict code here 我的问题是在这种情况下如何声明全局变量 我今天知道的三种替代方案 替代方案 1
  • YouTube 点击时禁用 HTML5

    有没有办法让我们通过javascript禁用HTML5视频的 播放 暂停 点击全屏 功能 然后在我们再次需要时将其放回去 我不知道你是否可以禁用它们 但你可以使用 css 删除它们 video webkit media controls f
  • 拉斐尔路径交叉点不起作用

    我对拉斐尔和 pathIntersection method JSFiddle 示例 http jsfiddle net t6gWt 2 您可以看到有两条线都与曲线相交 但当我使用 pathIntersection method 有一个未解

随机推荐

  • C中unsigned和unsigned int的区别

    您能说清楚两者之间的区别吗unsigned and unsigned int 也许一些示例代码会有所帮助 unsigned是一个修饰符 可以应用于任何整型 char short int long等 但就其本身而言 它与unsigned in
  • int64_t 的定义

    我是 C C 新手 所以我有几个关于基本类型的问题 a 你能向我解释一下两者之间的区别吗int64 t and long long int 根据我的理解 两者都是 64 位整数 有什么理由选择其中之一而不是其他吗 b 我试图查找定义int6
  • Spring AOP引入中原有接口丢失

    这是我的 Spring AOP 配置
  • 在 R 中绘图时图例消失

    我绘制了五个图表和一个图例 这些图表工作得很好 但是图例消失了而没有错误 我在 RStudio 中的预览如下所示 当我放大时 图例所在的区域是空白的 我使用以下代码 opar lt par no readonly TRUE par mfro
  • \377\376 附加到文件(Windows -> Unix)

    我有一个SSIS执行以下操作的包 运行 SQL 脚本 将结果导出到平面文件 UTF 8编码 分隔 并且 n对于新线路 FTP 结果到Solaris机器 二进制格式 问题是 当文件出现在我的 Solaris 机器上时 文件开头有以下内容 37
  • 如何动态创建局部变量?

    我有一个变量var some name 我想创建一个新对象并将其分配给some name 我该怎么做 例如 var some name some name Struct new name I need this a some name ne
  • oracle中使用seq和trigger自动增量-无效的sql语句

    我是 Oracle 的新手 来自 MySQL 我试图使用序列和触发器在 Oracle 中使用自动增量 以便每次插入时它都会将我的字段增加一 CREATE SEQUENCE proposals seq MINVALUE 1 START WIT
  • 如何打开多个窗口或操作多个实例

    如果出于某种疯狂的原因 我需要打开 100 个窗口 选项卡并导航到其中的 100 个不同的链接 我该怎么做 我可以同时在所有 100 个测试中运行某些测试吗 假设我有一个数组 a b c d e 我需要测试某种形式是否适用于所有这些值 我怎
  • QQuickWidget抓取图像

    我正在保存一个图像QQuickWidget有几个 QML 孩子 但我只有一张空白图像 C 方面 QQuickWidget content content gt setSource QUrl qml main qml QPixmap pm c
  • Sequential Guid 主键列应该是聚集索引吗?

    使用顺序 guid 的目标是 您可以使用聚集索引 而不会产生高级别碎片 如果它是常规 guid 那么聚集索引中通常会存在这种情况 对吗 首先澄清一下 主键和聚集索引是两个独立且不同的东西 即一个不与另一个耦合 PK 可以是非聚集的 聚集索引
  • 在g++编译器中使用strlen获取数组的长度

    有人可以解释为什么当我使用以下 g 编译器编译源代码时出现此错误 include
  • 降低 OpenCV 中的图像分辨率

    我正在使用 OpenCV 从 A4Tech 相机捕获图像 当我尝试降低图像分辨率时 图像断言失败 CvCapture camera cvCreateCameraCapture 1 0 is index of Laptop integrate
  • PHP:格式化时间 Stackoverflow 或 Apple Mail 风格

    有这个php net 文档中的非常好的功能使您能够以 Facebook 风格的方式格式化时间 例如 2 minutes ago 4 weeks ago or 3 years ago 不过 我更喜欢 Stackoverflow 和 Apple
  • Python 深度压缩

    我正在尝试编写一个像 zip 这样的函数 我不擅长解释我的意思 所以我只会显示我正在尝试做的事情的 代码 a 1 2 3 4 5 b a zip a b 1 1 2 2 3 3 4 5 4 5 myzip a b 1 1 2 2 3 3 4
  • Django 使用 postgres 进行测试 - 重置序列

    到目前为止 开发和测试已经在 SQLite 上完成 而生产则在 Postgres 上完成 现在一切都需要在 Postgres 上运行 并且大量测试失败了 原因是 每个测试的 ID 不是以 1 开头 而是在测试之间继续 解决此问题的一种方法是
  • Powershell:根据创建日期将文件移动到文件夹

    我不是编码员 但我仍然尝试调整此处找到的 PS 脚本 但仍然无法获得我想要的行为 对我来说最困难的部分是 2 位数的日要求 dd 经过几次菜鸟尝试后 我需要一些帮助 我有一个包含数百张 JPG 的文件夹 我根据拍摄日期手动将这些 JPG 分
  • 获取 jQuery 和/或 DOM 对象的 HTML 字符串

    我想我已经读完了全文jQuery API 文档并在调试器中查看 jQuery 对象和简单的 DOM 元素 以检查它们在运行时实际拥有的方法 但对于我来说 我找不到一种方法来获取表示 jQuery 对象内容的 html 字符串或一个 DOM
  • Java - 滚动到 JTextArea 内的特定文本

    我正在尝试在我正在编写的当前程序中实现一个功能 并且我想学习如何向下滚动到 JTextArea 中的特定文本 例如 假设我有以下内容 JTextArea area new JTextArea someReallyLongString som
  • 如何按升序打印奇数? [复制]

    这个问题在这里已经有答案了 我需要按升序打印一系列奇数 我只能按降序解决它 num int input print Type any integer count 1 while count lt num num 1 if num 2 0 p
  • 通过异步 JavaScript (Mocha) 进行循环测试

    我正在尝试使用 Mocha 测试异步 JavaScript 但在循环异步填充数组时遇到一些问题 我的目标是创建 N arr length 测试 数组的每个元素一个 可能我缺少一些关于摩卡语义的东西 到目前为止 这是我的 非工作的 简化代码