2012-09-18 12 views
26

मैं AngularJS e2e tests का प्रयास कर रहा हूं और यह निर्धारित कर रहा हूं कि चेकबॉक्स चेक किया गया है या नहीं।AngularJS e2e परीक्षणों में चेकबॉक्स की जांच कब की जाती है?

मैं एक नमूना के रूप में checkbox input के लिए परीक्षण समाप्त करने के लिए (समाप्ति उदाहरण में परीक्षण टैब समाप्त करने के लिए देखें) अंत का इस्तेमाल किया।

HTML स्निपेट:

Value1: <input type="checkbox" ng-model="value1"> <br/>

नियंत्रक स्निपेट:

function Ctrl($scope) { 
    $scope.value1 = true; 
} 

यहाँ मैं क्या करने की कोशिश की है:

1) expect(binding('value1')).toEqual('true');

यह {{value1}} के साथ स्क्रीन पर प्रदर्शित होने तक नमूना अंत में परीक्षण समाप्त करने के लिए काम करता है। यदि आप स्थानीय रूप से इसका परीक्षण करते हैं और '{{value1}} को हटाते हैं तो बाध्यकारी परीक्षण विफल हो जाता है। मेरे अधिकांश वास्तविक दुनिया के उदाहरणों में मैं कहीं भी स्क्रीन पर चेकबॉक्स मान प्रदर्शित नहीं कर रहा हूं।

2) expect(input('value1').val()).toEqual('true');

मूल्य हमेशा on लागू हो जाएगी और न किया जाए या नहीं चेकबॉक्स एक जाँच की राज्य (this post से लिया गया) में है से संबंधित है।


नोट: यह कोणीय E2E परीक्षण भविष्य में Protractor से बदल दिया जाएगा की तरह दिखता है (the docs देखें)

उत्तर

17

मैं इस सवाल upvoted के रूप में मैं एक ही मुद्दा था: अगर तत्व मौजूद नहीं है या अगर वहाँ एक टाइपो था मूल्य अभी भी इस उदाहरण की तरह 0 होगा कुछ चेक नहीं किया गया है। मैंने अपने परीक्षण में निम्नलिखित कार्यवाही का उपयोग किया, लेकिन मैं बेहतर तरीके से देखने की उम्मीद कर रहा हूं।

expect(element('input[ng-model="value1"]').attr('checked')).toBeTruthy(); 
+0

धन्यवाद! मुझे यह पसंद है जो मैं वर्तमान में कर रहा हूं उससे बेहतर है। यदि कोई बेहतर तरीका है तो मैं इस प्रश्न को थोड़ा सा खोलूंगा :) – Gloopy

+5

कर्म में, यह 'attr' नहीं बल्कि' prop' 'का उपयोग किया जाना चाहिए।साथी googlers के लिए। – Offirmo

1

मैं आशा करती हूं वहाँ एक बेहतर तरीका है, लेकिन मैं मान्य द्वारा इस के आसपास मिल गया यह करने के लिए

expect(element('input[ng-model="value1"]:checked').count()).toBe(1);

कम से कम एक नकारात्मक पक्ष यह है जब अगर जाँच: कि मॉडल बंधन मिलान जाँच इनपुट तत्वों की गिनती

expect(element('input[ng-model="valueDoesNotExist"]:checked').count()).toBe(0);

47

Protractor का उपयोग कर किसी के लिए, वहाँ वास्तव में इस के लिए isSelected() webdriver है। इसके बजाय checked के लिए पूछ की

विशेषता कर सकते हैं:

expect(element(by.model('value1')).isSelected()).toBeTruthy(); 
+0

जब मैं इस कोड को अपवाद प्राप्त करने का प्रयास करता हूं: "अमान्य तत्व स्थिति: तत्व वर्तमान में संवादात्मक नहीं है और इसका उपयोग नहीं किया जा सकता है"। इस विचार को हल करने के लिए कोई भी विचार – Pradeep

+0

मेरे प्रोटैक्टर दिनों में, मैंने [waitReady.js] (https://gist.github.com/elgalu/2939aad2b2e31418c1bb) स्क्रिप्ट के साथ स्टाइल तत्व समस्या हल की, देखें: http: // stackoverflow .com/प्रश्न/35533139/प्रोटैक्टर-सही-उपयोग-के-प्रतीक्षा-जेएस-फाइल-इन-माय-टेस्ट/35536164 –

+0

इसे स्वीकार किए गए उत्तर के रूप में बदला जाना चाहिए –

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