2014-12-31 11 views
6

में $ state.go विधि है, मैं एक ऐसे फ़ंक्शन के लिए यूनिट परीक्षण कैसे लिख सकता हूं जिसमें $ state.go() है और जिसे उस विशेष सैट पर रीडायरेक्ट करने की उम्मीद है?यूनिट परीक्षण नियंत्रक जिसमें नियंत्रक

  $scope.inviteMembers = (id)=> { 
       $state.go('invite', {deptId: id}); 
       } 
+0

क्या आपके पास पहले से ही आपके नियंत्रक के लिए यूनिट परीक्षण हैं? – lukewestby

+0

@lukewestby .o.मैं केवल राज्यों की जांच करने के लिए लिख रहा हूं – forgottofly

उत्तर

15

चूंकि यह एक यूनिट परीक्षण है, इसलिए आपको यह सुनिश्चित करने की आवश्यकता है कि फ़ंक्शन कहा जा रहा है, और कुछ नहीं। इस तर्ज पर

कुछ:

it('should move to the invite page after inviting someone', function() { 
    spyOn($state, 'go'); 

    $scope.inviteMembers(1); 

    expect($state.go).toHaveBeenCalledWith('invite', {deptId: 1}); 
}); 

तो यहाँ मुख्य विचार $state की go विधि पर जासूसी करने के लिए है और जब हम विधि कॉल, हम बस की पुष्टि है कि $state.go विधि बुलाया गया है की जरूरत है और क्या पैरामीटर के साथ।

इससे पहले कि आप मुझसे पहले पूछें ... हाँ, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि राज्य भी बदल जाए। खैर आपको ऐसा करने की ज़रूरत नहीं है।

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

+0

धन्यवाद @ जीसस। क्या आप कृपया इस मामले को भी देखें। Http://stackoverflow.com/questions/27740395/cannot-read-property-loadlisting के- अपरिभाषित-कर्म-चमेली – forgottofly

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