使用jasmine跟踪函数执行时间

时间:2016-07-02 01:21:20

标签: javascript performance testing jasmine protractor

是否可以创建一个可重复使用的 jasmine matcher 来断言一个函数运行少于N秒?

样本期望风格:

expect(someFunction, [arg1, arg2]).toBeCompletedForLessThan(3);
expect(obj.someMethod, [arg1, arg2]).toBeCompletedForLessThan(5);

我们希望将其与Protractor和自定义性能测试结合起来,我们希望断言某些UI执行步骤不会超出时间限制。

1 个答案:

答案 0 :(得分:5)

我会使用自定义计时器测量已用时间,然后使用.toBeLessThan声明结果:

var timer = Timer();

$("#mytext").getText().then(function(text){
    console.log(text);
});

expect(timer.elapsed).toBeLessThan(1000);   // to be under 1 second

计时器:

var Timer = function() {
  var starttime = 0;

  browser.controlFlow().execute(function() {
    starttime = Date.now()
  });

  return {
    get elapsed() {
      return browser.controlFlow().execute(() => Date.now() - starttime);
    }
  };
};