mocha 测试库的使用

错误的处理异步测试

  • 异步当出现断言错误的时候,他会抛出错误,但不会把这次测试当作失败,就是正确的顺利通过测试了,很无语。
  • promise的reject会在then的第二个函数内处理,当遇到unhand的错误时,catch会进行处理,在then的函数内部出现运行错误,也会跳转到catch进行处理,相当于trycatch。如果不指定then的第二个函数,就会跳转到catch处理,catch中出现错误,就会出现unhand的错误,直接报错。自己想想
  • 或许是只有异步才会出现下列情况
  • describe('测试全部resolve', () => {// 在这里传入done,对不去,里面不能使用done

    it("返回['success1', 'success2']", (done) => {// 在这里传入done,确实可以使用done,但是只有断言错误,才会触发,如果断言正确,就会卡死,出现超时。

    promiseAll([

    delay(100, 'success1'),

    delay(50, 'success2'),

    ]).then((res) => {

    assert.deepEqual(res, ['success2', 'success1']);

    }, (err) => {

    done(err);

    })

    }).catch((err) => {

    done(err)

    })

    });

正确的处理异步测试

  • 当处理promise等异步处理的时候,使用async函数去处理,会获得想要的结果。一个例子
  • describe('测试全部resolve', () => {
    it("返回['success1', 'success2']", async () => {
    await promiseAll([
    delay(100, 'success1'),
    delay(50, 'success2'),
    ]).then((res) => {
    assert.deepEqual(res, ['success2', 'success1']);
    }, (err) => {
    assert.fail();
    })
    })
    });
  • 这样,如果出现断言失败,才会得到想要的结果,用同步去处理异步断言测试。

蛋疼的mocha库-promise异步测试的更多相关文章

  1. mocha框架下,异步测试代码错误造成的问题----用例超时错误

    今天用抹茶(mocha)做个测试,发现有一个测试项目总是超时: describe("DbFactory functions",function(){ it("query ...

  2. ES6入门八:Promise异步编程与模拟实现源码

    Promise的基本使用入门: ——实例化promise对象与注册回调 ——宏任务与微任务的执行顺序 ——then方法的链式调用与抛出错误(throw new Error) ——链式调用的返回值与传值 ...

  3. ES6笔记(7)-- Promise异步编程

    系列文章 -- ES6笔记系列 很久很久以前,在做Node.js聊天室,使用MongoDB数据服务的时候就遇到了多重回调嵌套导致代码混乱的问题. JS异步编程有利有弊,Promise的出现,改善了这一 ...

  4. Js中强大的Promise异步机制

    少年别激动 我的这份随笔里面只涉及promise概念 如果想深入了解Promise的用法 可以去阮老师es6入门里面详读 奉上链接 http://es6.ruanyifeng.com/#docs/pr ...

  5. 【测试】Gunicorn , uWSGI同步异步测试以及应用场景总结

    最近使用uwsgi出了一些问题,于是测试下Gunicorn测试对比下 环境 一颗cpu 1g内存 Centos系统 Django作为后端应用,Gunicorn默认模式和异步模式,响应基本是无阻塞类型 ...

  6. 【ES6】Generator+Promise异步编程

    一.概念 首先我们要理解Generator和Promise的概念. Generator:意思是生成器,可以在函数内部通过yeild来控制语句的执行或暂停状态. *Foo(){ yeild consol ...

  7. Promise 异步函数的加上外壳终止Promise

    //promise异步函数的请求终止 export default function markCancleble(promise){ let hasCanceled_ = false ; const ...

  8. 微信小程序:封装全局的promise异步调用方法

    微信小程序:封装全局的promise异步调用方法 一:封装 function POST(url, params) { let promise = new Promise(function (resol ...

  9. PHP CURL 异步测试

    需求, 请求第三方接口获取数据, 单个接口0.1秒, 如果有10万个接口, 那么岂不是得1万秒才能请求完, 所以使用PHP异步测试一下, 其他的方法还有: 1.使用队列, SupserVior 开多个 ...

随机推荐

  1. mongodb系列~mongodb数据迁移

    一 简介:今天来聊聊mongo的数据迁移二 迁移   1 具体迁移命令   nohup mongodump --port --db dbname --collection tablename --qu ...

  2. Vue.js——常用的指令

    1.v-on:指令监听DOM事件,并在触发时运行一些javaScript代码. <div id='myView'> <img src="img/se.png" v ...

  3. svn使用小技巧

    在使用svn的时候,往往导入到eclipse中,使用eclipse进行提交修改,但是当删除文件夹的时候,eclipse会发生冲突,不能够提交. 使用一种方式,将svn上的项目跟你eclipse对应项目 ...

  4. Java Map 键值对排序 按key排序和按Value排序

    一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...

  5. [HTML]点击按钮,页面总是跳回顶端的解决方法(Clicking an button,always resets the view to top of page)

    1 前言 当网页页面较长或者表单较多时,右侧会出现滚动条,然而经常会出现点击底部的<button>按钮或者<a>超链接,会出现点击后,当前页面会回到顶端. 2 方案 例如样例代 ...

  6. PYTHON-匿名函数,递归与二分法,面向过程编程

    """匿名函数1 什么是匿名函数 def定义的是有名函数:特点是可以通过名字重复调用 def func(): #func=函数的内存地址 pass 匿名函数就是没有名字的 ...

  7. 一张纸,折多少次和珠穆拉峰一样高(for if 和break)

  8. 无法下载apk等格式的文件的解决方案---ASP .NET Core 2.0 MVC 发布到IIS上以后无法下载apk等格式的文件的解决方案

    ASP .NET Core MVC 发布到  IIS 上以后 无法下载apk等格式的文件 使用.NET Core MVC创建了一个站点,其他文件可以下载,但是后来又需求,就把手机端的apk合适的文件上 ...

  9. redis进阶

    一.redis介绍 redis的功能特性 1.高速读写 2.数据类型丰富 3.支持持久化 4.多种内存分配及回收策略 5.支持事务 6.消息队列.redis用的多的还是发布-订阅模式 7.支持高可用 ...

  10. vue-swiper的使用

    写博客不是我的爱好,只是人脑毕竟空间只有那么大,有时候会忘了,好记性不如烂笔头,所以通过博客记录点点滴滴,以后可以翻出来看. vue-awesome-swiper官网链接https://www.npm ...