• 蛋疼的mocha库-promise异步测试


    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();
        })
      })
      });
      
    • 这样,如果出现断言失败,才会得到想要的结果,用同步去处理异步断言测试。
  • 相关阅读:
    iOS开发---iPhone SDK 包含哪些东西?
    COS-8文件系统
    COS-7设备管理
    COS-6主存管理
    COS-5资源分配与调度
    COS-4进程及进程管理
    饭卡管理系统学生E-R图
    COS-3OS的用户接口
    COS-2OS结构和硬件支持
    计算机操作系统-1绪论
  • 原文地址:https://www.cnblogs.com/zanzg/p/9968110.html
Copyright © 2020-2023  润新知