2015-06-23 10 views
5

मैं एक एंगुलरजेएस ऐप (ईएस 6 का उपयोग कर रहा हूं) जो कि जितना संभव हो उतना AngularJS 2.0 बना रहा है, इसलिए माइग्रेशन के साथ मेरे पास बहुत सारे काम नहीं होंगे।AngularJS 2.0 - एप्लिकेशन का परीक्षण कैसे करें?

जैसा कि आप जानते नियंत्रकों के रूप में हम उन्हें < = v1.4

उदाहरण मेरे निर्देशों में से एक के कोड में पता नहीं होगी

class LoginSidebar { 

    constructor() { 

    } 

    someMethod(){ 
    } 
} 

LoginSidebar.$inject = []; 

export default function() { 
    return { 
     scope: {}, 
     templateUrl: 'tpl/path/to/loginSidebar.tpl.html', 
     replace: true, 
     controller: LoginSidebar, 
     controllerAs: 'loginSidebarCtrl' 
    }; 
}; 

यह मेरा app.js कैसा दिखता है

import loginSidebar from "./js/component/loginSidebar/LoginSidebar.js"; 

angular.module('myModule', [ 
    'ngNewRouter', 
    'ngAnimate' 
]) 

    .directive("loginSidebar", loginSidebar); 

के रूप में आप मैं वहाँ में कोई .controller() है, तो मैं कैसे वर्ग के अंदर तरीकों का परीक्षण करना चाहिए देख सकते हैं?

पीएस। मैं कर्म-जैस्मीन उपयोग करने की कोशिश की है, लेकिन मैं पूरी निर्देश का परीक्षण किया है और अगर मैं ऐसा करते हैं, मैं त्रुटि मैं यहाँ लिखा है: AngularJS & Karma-Jasmine - How to ignore templateUrl to avoid "Unexpected request: GET .../.html"

उत्तर

0

आप वैश्विक नाम के साथ नियंत्रक परिभाषित कर सकते हैं, और उसके बाद निर्देश में इसे संदर्भ :

//LoginSidebarController.js 
class LoginSidebarController { 
    // controller code here 
} 

export default LoginSidebarController 

//LoginSidebarDirective.js 
export default function() { 
    return { 
     scope: {}, 
     templateUrl: 'tpl/path/to/loginSidebar.tpl.html', 
     replace: true, 
     controller: 'LoginSidebarController', 
     controllerAs: 'loginSidebarCtrl' 
    }; 
}; 

//app.js 
import loginSidebarDirective from "./js/component/loginSidebar/LoginSidebarDirective.js"; 
import LoginSidebarController from "./js/component/loginSidebar/LoginSidebarController.js"; 

angular.module('myModule', []) 
    .directive('loginSidebar', loginSidebarDirective) 
    .controller('LoginSidebarController', LoginSidebarController) 

फिर आप नियंत्रक को अन्य सामान्य नियंत्रक के रूप में निर्देश से स्वतंत्र रूप से परीक्षण करने की आवश्यकता हो सकती है।

दूसरी तरह से आप angular.element().controller('loginSidebar') विधि के माध्यम से नियंत्रक तक पहुंच प्राप्त कर सकते हैं। कुछ ऐसा:

var testElm = angular.element('<login-sidebar />'); 
$compile(testElm); 
testElm.controller('loginSidebar') 
संबंधित मुद्दे