是否可以创建一个可重复使用的 jasmine matcher 来断言一个函数运行少于N秒?
样本期望风格:
expect(someFunction, [arg1, arg2]).toBeCompletedForLessThan(3);
expect(obj.someMethod, [arg1, arg2]).toBeCompletedForLessThan(5);
我们希望将其与Protractor和自定义性能测试结合起来,我们希望断言某些UI执行步骤不会超出时间限制。
答案 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);
}
};
};