我有一個測試用例,我的代碼向服務器發出請求,並檢查指定日期的文件名是否存在。由於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