有关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()的部分尚未执行。
有人可以解释这是怎么发生的吗?谢谢!
答案 0 :(得分:0)
量角器旨在与返回承诺的异步调用一起使用。它们被添加到内部队列中并以同步方式执行。由于console.log
是一个同步调用,因此它在此队列之外运行,因此似乎无序执行。尝试这样的事情:
browser.call(() => { console.log(formattedDateTime); });
这是编写量角器测试时要理解的非常重要的概念;我建议对Protractor中的控制流进行一些阅读。还有一个类似的SO问题,您可能会发现有帮助的here。