量角器:.spec和.po.ts文件执行的时间?

时间:2019-03-15 20:38:33

标签: angular typescript protractor

有关TypeScript和量角器的新手问题:

我有两个简单的辅助函数,它们位于我的量角器套件中的shared.po.ts文件中。它们由我的.spec文件中的第三个 it()调用-也就是说,在Protractor测试执行时不会立即调用它们:

formattedDate(){
  var MyDate = new Date();
  var mth = ('0' + (MyDate.getMonth()+1));
  var day = ('0' + MyDate.getDate());
  var yr = MyDate.getFullYear();   
  return mth.slice(-2) +'/' + day.slice(-2) +'/' + yr;}

formattedDateTime(){
  var MyDate = new Date();      
  var hrs = ('0' + MyDate.getHours()).slice(-2); 
  var mins =('0' + MyDate.getMinutes()).slice(-2); 
  var time = hrs +':'+mins;
  return this.formattedDate() + ' ' +  time;}

我在.spec文件中像这样调用函数formattedDateTime():

  let formattedDateTime = shared.formattedDate();     
  console.log(formattedDateTime);

执行测试脚本时,我立即获得一个控制台项目“ 03/15/2019 10:15”。我没有进行无头测试:我可以看到一个浏览器窗口正在执行我的脚本,并且清晰可见.spec文件中调用formattedDateTime()的部分尚未执行。

有人可以解释这是怎么发生的吗?谢谢!

1 个答案:

答案 0 :(得分:0)

量角器旨在与返回承诺的异步调用一起使用。它们被添加到内部队列中并以同步方式执行。由于console.log是一个同步调用,因此它在此队列之外运行,因此似乎无序执行。尝试这样的事情:

browser.call(() => { console.log(formattedDateTime); });

这是编写量角器测试时要理解的非常重要的概念;我建议对Protractor中的控制流进行一些阅读。还有一个类似的SO问题,您可能会发现有帮助的here