35

मैंने हाल ही में एंगुलरजेएस के साथ कुछ लिखना शुरू कर दिया है और मुझे यकीन नहीं है कि इस विशेष चीज़ के लिए एक परीक्षा लिखने के बारे में कैसे जाना है। मैं एक "सहायता अनुरोध" मोड बना रहा हूं जिसमें विभिन्न राज्य हैं। तो मेरे नियंत्रक में, मैं $ scope.request_mode चर का उपयोग करता हूं। सहायता अनुरोधों को सक्रिय करने के लिए अलग-अलग लिंक उस चर को अलग-अलग सेट करते हैं।

फिर मेरे निर्देश के अंदर, मैं अनुरोध मोड परिवर्तन के रूप में चीजों को चुनिंदा सक्रिय या निष्क्रिय करने के लिए $scope.$watch('request_mode', function(){...}); कर रहा हूं। कोड सभी महान काम करता है, लेकिन मेरी समस्या यह है कि परीक्षण के साथ है। मुझे $scope.$watch लेने के लिए जैस्मीन नहीं मिल रहा है और जब यह बदलता है तो वास्तव में कुछ भी आग लगती है।

मुझे यकीन है कि किसी ने पहले इसमें भाग लिया है, इसलिए किसी भी सुझाव की बहुत सराहना की जाएगी।

+1

आपने अभी तक क्या प्रयास किया है? क्या आपके पास कुछ मौजूदा टेस्ट कोड है जिसे हम देख सकते हैं? –

उत्तर

88

अपने इकाई परीक्षण में आप $scope.$watch() को गति प्रदान करने मैन्युअल कॉल $scope.$digest() या $scope.$apply() की जरूरत है।

आम तौर पर आपके कोड में आपको ऐसा करने की ज़रूरत नहीं है, क्योंकि दृश्यों के पीछे ng-click$rootScope.$apply जैसे निर्देश हैं।

+3

जिसे उत्तर, स्कोप के रूप में चिह्नित करने की आवश्यकता है। $ लागू करें() मेरे लिए काम करता है – Anonymous

+3

क्या यह कभी ऐसा मामला है कि $ आवेदन को दो बार बुलाया जाना चाहिए? अर्थात। एक बार फिर देखे गए मूल्य को बदलने से पहले और एक बार फिर, मेरी उम्मीदें झूठी हैं। मुझे एक उदाहरण नहीं मिल रहा है जिसमें किसी ने इसे दो बार बुलाया था। – nymo

+3

हां, इसे मेरे परीक्षणों में से एक के लिए दो बार बुलावा भी मेरे लिए आवश्यक था। –

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