2012-08-05 19 views
5

मुझे zombie.js परीक्षण ढांचे और Google मानचित्र API के साथ कोई समस्या है।zombie.js और Google मानचित्र API

मेरे पास एक साधारण ज़ोंबी.जेएस है जो एक होम पेज लोड करता है और साइन इन लिंक पर क्लिक करने का प्रयास करता है। हालांकि, जब मैं क्या (zombie.js ब्राउज़र वस्तु के नजरिए से) मुख पृष्ठ HTML के लिए वापस आ जाता है को देखो, मैं केवल यह शरीर अनुभाग में देखें:

<body> 
    <script src="https://maps.gstatic.com/intl/en_us/mapfiles/api-3/9/12/main.js"  type="text/javascript"></script> 
</body> 

अगर मैं गूगल मैप्स जावास्क्रिप्ट को दूर मूल पृष्ठ से, सब कुछ ठीक काम करता है और मुझे पूरा अनुभाग मिलता है। एक अलग पृष्ठ का अनुरोध करना जो मानचित्र API का उपयोग नहीं करता है, ठीक काम करता है।

मैं यहाँ एक संबंधित सवाल देखते हैं, लेकिन समाधान का पूरी तरह से वर्णित नहीं है: https://github.com/assaf/zombie/issues/250

किसी ने मुझे इस के लिए पूर्ण समाधान का साथ मदद कर सकते हैं?

यहाँ प्रश्न में zombie.js कोड है:

suite('Zombie Sign In', function() { 

    test('Home page should have sign-in link', function(done) { 
     var browser = new Browser(); 
     browser.debug = true; 
     browser.authenticate().basic(conf.basicAuth.username, conf.basicAuth.password); 
     browser.visit(conf.baseURL, function(e, browser) { 
      console.log(browser.html()); // here is where I get the empty body section 
      browser.clickLink("Sign In", function() { 
       browser.text("title").should.eql('my title'); 
       done();    
      }); 
     }); 
    }); 
}); 

उत्तर

3

मैं आज इस मुद्दे में भाग - तुम सिर्फ एसिंक्रोनस रूप एपीआई लोड करने के लिए की जरूरत है। इस के लिए

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE" type="text/javascript"></script> 
<script type="text/javascript"> 
    function initialize() { 
    var map = new google.maps.Map(/* ... */); 
    } 

    window.onload = initialize(); 
</script> 

:

https://developers.google.com/maps/documentation/javascript/tutorial#asynch

अनिवार्य रूप से आप सिर्फ इस तरह किसी भी कोड बदलने की जरूरत है: यह इतना एक प्रलेखित विकल्प है, जो आपको यहाँ पर पढ़ सकते हैं के रूप में एक समाधान नहीं है (लगभग पूरी तरह से लिंक से ऊपर उठा लिया):

<script type="text/javascript"> 
    function initialize() { 
    var map = new google.maps.Map(/* ... */); 
    } 

    function loadScript() { 
    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=TRUE_OR_FALSE&callback=initialize"; 
    document.body.appendChild(script); 
    } 

    window.onload = loadScript; 
</script> 

यहाँ ध्यान दें करने के लिए महत्वपूर्ण बात यह है कि आप एक कॉलबैक पारित करने के लिए है कि है script.src टैग पर पैरामीटर (इस उदाहरण में हम प्रारंभ करते हैं, लेकिन यह जो कुछ भी आप चाहते हैं) - यह गतिशील रूप से इंजेक्शन वाले मानचित्र स्क्रिप्ट टैग लोड होने के बाद Google को आपके प्रारंभिक कोड को आग लगने देगा।

यह दूसरा तंत्र मेरे ज़ोंबी परीक्षणों को ठीक करता है।

संबंधित मुद्दे