• 9.异步测试


    转自:http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html

    Mocha默认每个测试用例最多执行2000毫秒,如果到时没有得到结果,就报错。对于涉及异步操作的测试用例,这个时间往往是不够的,需要用-t--timeout参数指定超时门槛。

    进入demo05子目录,打开测试脚本timeout.test.js

    
    it('测试应该5000毫秒后结束', function(done) {
      var x = true;
      var f = function() {
        x = false;
        expect(x).to.be.not.ok;
        done(); // 通知Mocha测试结束
      };
      setTimeout(f, 4000);
    });
    

    上面的测试用例,需要4000毫秒之后,才有运行结果。所以,需要用-t--timeout参数,改变默认的超时设置。

    
    $ mocha -t 5000 timeout.test.js
    

    上面命令将测试的超时时限指定为5000毫秒。

    另外,上面的测试用例里面,有一个done函数。it块执行的时候,传入一个done参数,当测试结束的时候,必须显式调用这个函数,告诉Mocha测试结束了。否则,Mocha就无法知道,测试是否结束,会一直等到超时报错。你可以把这行删除试试看。

    Mocha默认会高亮显示超过75毫秒的测试用例,可以用-s--slow调整这个参数。

    
    $ mocha -t 5000 -s 1000 timeout.test.js
    

    上面命令指定高亮显示耗时超过1000毫秒的测试用例。

    下面是另外一个异步测试的例子async.test.js

    
    it('异步请求应该返回一个对象', function(done){
      request
        .get('https://api.github.com')
        .end(function(err, res){
          expect(res).to.be.an('object');
          done();
        });
    });
    

    运行下面命令,可以看到这个测试会通过。

    
    $ mocha -t 10000 async.test.js
    

    另外,Mocha内置对Promise的支持,允许直接返回Promise,等到它的状态改变,再执行断言,而不用显式调用done方法。请看promise.test.js

    
    it('异步请求应该返回一个对象', function() {
      return fetch('https://api.github.com')
        .then(function(res) {
          return res.json();
        }).then(function(json) {
          expect(json).to.be.an('object');
        });
    });
  • 相关阅读:
    2017.3.22上午
    2017.3.21下午
    2017.3.21上午
    git上传到阿里云code
    spring+ibatis整合
    Aop资料整理
    java加密算法之AES小记
    单例的八种写法:推荐静态内部类和枚举
    dubbo入门示例
    自定义注解判空简单示例
  • 原文地址:https://www.cnblogs.com/sharpest/p/8182990.html
Copyright © 2020-2023  润新知