2015-12-27 3 views
6

मेरे चांदा conf.js प्रतीक्षा करने के लिए, onPrepare समारोह एक http अनुरोध है कि तरह लग रहा है बनाने के लिए की जरूरत है,फोर्स चांदा के onPrepare async http अनुरोध के लिए

onPrepare: function(done) { 
    request.get('http://pepper/sysid') 
     .end(function(err, resp){ 
     if(err || !resp.ok){ 
      log("there is an error " + err.message) 
      done() 
     }else{ 
      global.sysid = resp.sysid 
      done() 
     } 
     }) 

यह रूप में त्रुटि फेंकता है, done is not a function

वहाँ किसी भी है दूसरी तरफ, कि मैं अपने परीक्षणों को निष्पादन शुरू करने से पहले onPrepare के अंदर कॉलबैक को मजबूर कर सकता हूं?

उत्तर

8

onPrepare()optionally return a promise कि चांदा परीक्षण निष्पादित करने के लिए शुरू करने से पहले हल होगा कर सकते हैं:

onPrepare वैकल्पिक रूप से एक वादा है, जो कोणमापक निष्पादन जारी रखने से पहले के लिए इंतजार करेंगे लौट सकते हैं। इसका उपयोग तब किया जा सकता है जब तैयारी में कोई एसिंक्रोनस कॉल शामिल है, उदा। ब्राउज़र के साथ बातचीत। अन्यथा प्रोटैक्टर निष्पादन के आदेश की गारंटी नहीं दे सकता है और तैयारी खत्म होने से पहले परीक्षण शुरू कर सकता है।

एक चांदा promise करें और यह onPrepare() से लौटने:

onPrepare: function() { 
    var defer = protractor.promise.defer(); 

    request.get('http://pepper/sysid').end(function(err, resp) { 
     if (err || !resp.ok) { 
      log("there is an error " + err.message); 
      defer.reject(resp); 
     } else { 
      global.sysid = resp.sysid; 
      defer.fulfill(resp); 
     } 
    }); 

    return defer.promise; 
}, 
संबंधित मुद्दे