Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing AngularJS 2.0-如何测试应用程序?_Unit Testing_Angular_Ecmascript 6_Karma Jasmine - Fatal编程技术网

Unit testing AngularJS 2.0-如何测试应用程序?

Unit testing AngularJS 2.0-如何测试应用程序?,unit-testing,angular,ecmascript-6,karma-jasmine,Unit Testing,Angular,Ecmascript 6,Karma Jasmine,我正在构建一个AngularJS应用程序(使用ES6),该应用程序尽可能多地使用AngularJS 2.0,因此我不会有太多的迁移工作 正如您所知,不会有我们在中所知道的控制器,您可以使用全局名称定义控制器,然后在指令中引用它: //LoginSidebarController.js class LoginSidebarController { // controller code here } export default LoginSidebarController //LoginS

我正在构建一个AngularJS应用程序(使用ES6),该应用程序尽可能多地使用AngularJS 2.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')
var testElm=angular.element(“”);
$compile(testElm);
testElm.controller('loginSidebar'))
//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)
var testElm = angular.element('<login-sidebar />');
$compile(testElm);
testElm.controller('loginSidebar')