我有一个测试用例,我的代码向服务器发出请求,并检查指定日期的文件名是否存在。由于GET请求是异步调用,因此在检查它是否为指定日期之前,如何确保从服务器获取文件名?在量角器中获取请求的异步调用
这里是我的代码摘录:
var re = new RInterface();
it('data show exists', function() {
target.each(function(ele){
browser.actions().mouseMove(ele).perform();
re.get(function(result){
expect(result).toEqual(true);
});
});
});
RInterface.js
var Service = function() {
var serv = this;
var uname = atob(settings.username);
var pwd = atob(settings.password);
var url = 'https://' + uname + ':' + pwd + '@' + settings.Url + '/' + settings.format + '/' + settings.period;
var completeURL = url;
var today = DateString();
serv.get = function(callback) {
var dataStrAry = [];
var count = 0;
request(completeURL, function (error, response, body) {
if (!error && response.statusCode == 200) {
var serverData = JSON.parse(body);
var split = serverData[serverData.length-1].Name.split(" ");
var target = split[split.length-1].split(".")[0];
// Check if the file with current date is available
// If it is, then assume data is saved on the server
if(target == today) {
console.log("equal");
callback(true);
}
else {
console.log("not equal");
callback(false);
}
}
else {
console.log("errror call");
callback(false);
return;
}
});
};
所以,re.get是我做的GET请求到服务器,然后我通过回调函数被调用时请求结束。问题是,我认为在我的代码从服务器获取数据之前量角器完成了测试。如何强制量角器等待,以便我可以检查返回的数据?我目前的解决方法是把请求放在beforeEach里面,似乎量角器强制测试等待它完成执行。
工程就像一个魅力。谢谢! – user30646