2015-07-17 9 views
5

में एसिंक्रोनस साइड-इफेक्ट्स के साथ किसी भी कोड को लपेटने की आवश्यकता होगी। हमारे पास पहले से ही एक ऐप है जो सीआई के उद्देश्य के लिए परीक्षण मामलों को जोड़ने के लिए काम कर रहा है।परीक्षण करते समय एम्बर त्रुटि: आपको

हम एक छोटे से कोड है कि प्रवेश प्रक्रिया की कोशिश करता है और जाँच क्या सफलता, असफलता, अवैध खाता बंद कर दिया आदि

तो मैं follwing कोड की कोशिश की तरह संभव लॉगिन राज्यों के बाद होता है।

visit('/login') 
    .fillIn('#identification', "testuser") 
    .fillIn('#password', "testpass") 
    .click('input[type="submit"]') 
    andThen(function(){ 
     ok(!exists('button:contains(sign in)'), '3. Login button is not displayed when authenticated'); 
     ok(exists('.dropDownMenuOptions li:contains(Logout)'), '4. Logout button is displayed when authenticated'); 
    }); 

और यह कंसोल में निम्न त्रुटि देता है।

ember.debug.js:5162 Uncaught Error: Assertion Failed: You have turned on testing mode, which disabled the run-loop's autorun. You will need to wrap any code with asynchronous side-effects in a run 

यह त्रुटि क्लिक होने के बाद होती है। चूंकि क्लिक सर्वर पर AJAX कॉल करता है और इसकी प्रतिक्रिया पर मार्ग संक्रमण किया जाता है।

सफल लॉगिन के मामले में, मैं यह जांचना चाहता हूं कि मेरा मार्ग /login से / से बदल गया है, जो मैं इस त्रुटि के कारण नहीं कर पा रहा हूं।

कृपया सुझाव दें।

धन्यवाद

+0

क्या आप कृपया क्लिक कोड जोड़ सकते हैं। –

उत्तर

14

नियंत्रक/घटक है कि आपके प्रपत्र संभालती में प्रस्तुत आप एक निर्धारित कर रही होगी (उदाहरण)

save: function() { 
    this.get('model').set('name', 'foo'); 
} 

यह काम कुछ ajax के बाद रन लूप (async) में किया जाता है घटना को डब्ल्यू/एम्बर रन को लपेटना सुनिश्चित करें ताकि

save: function() { 
    Ember.run(function() { 
     this.get('model').set('name', 'foo'); 
    }); 
} 
+0

काम करता है। यह दुर्भाग्यपूर्ण है कि अब मुझे घटकों के परीक्षण पास करने के लिए सैकड़ों .set() को लपेटना है ...: अभिव्यक्ति रहित: –

+0

@ जेन वर्खोवेन सचमुच आप ऐप में अपने एकल AJAX फ़ंक्शन/सहायक में इसे अलग करते हैं। इस एजेक्स/वादे सहायक में आप जैसे कुछ देखते हैं मैं अपने एम्बर ऐप्स में उपयोग करता हूं https://github.com/toranb/ember-promise/blob/master/addon/mixins/promise.js#L12 –

+0

आप आग के लिए क्या उपयोग कर रहे हैं अभी AJAX अनुरोधों से बाहर? यदि आपके पास "सिंगल फ़ंक्शन/ऑब्जेक्ट" नहीं है तो अब रिफैक्टर के लिए एक अच्छा समय है :) –

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