1

我想以角度使用单元测试,但webapp我正在研究它是在它的欠结构上创建的。例如 :

(function() {
'use strict';
angular
  .module('app', [
    'ngAnimate',
    'ui.load',
    'ui.jp',
    'oc.lazyLoad'
  ]);})();

及其控制器之一:

(function() {
'use strict';
angular
    .module('app')
    .controller('EditorCtrl', EditorCtrl);

    function EditorCtrl($scope) {
      var vm = $scope;
      vm.options = {
        toolbar: [
          ['style', ['bold', 'italic', 'underline', 'clear']],
        ]
      };
    }})();

而且我不知道如何对这个应用程序使用单元测试,因为我的测试找不到控制器。

这是我的控制器和测试:

   (function () {
  'use strict';
  angular
    .module('app')
    .controller('DashboardCtrl', dashboard);
    describe('test dashboard', function () {

      beforeEach(module('DashboardCtrl'));

      var $controller;

      beforeEach(inject(function (_$controller_) {
        $controller = _$controller_;
      }));

      describe('sum', function () {
        it('1 + 1 should equal 2', function () {
          var $scope = {};
          var controller = $controller('DashboardCtrl', {$scope: $scope});
          $scope.x = 1;
          $scope.y = 2;
          $scope.sum();
          expect($scope.z).toBe(3);
        });

        it('z should default to zero', function () {
          var $scope = {};
          var controller = $controller('DashboardCtrl', {$scope: $scope});
          expect($scope.z).toBe(0);
        });
      });

    });
  function dashboard($scope) {
    $scope.name = 'Dashboard';
    $scope.z = 0;
    $scope.sum = function () {
      $scope.z = $scope.x + $scope.y;
    };
  }


})();

在业力测试中告诉我这个error

错误:[$injector:modulerr] 无法实例化模块 DashboardCtrl,原因是:错误:[$injector:nomod] 模块“DashboardCtrl”不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。

这表明找不到"DashboardCtrl"控制器。

4

2 回答 2

1

files通过在选项中添加所有模块解决的问题karma.conf.js

关键是注入的​​模块之一的事件湖是主模块,这里是app停止你的测试,所以除了包括你的控制器,你需要添加所有模块。

于 2016-03-12T10:55:40.877 回答
0

当单元测试使用 $controller 来获取控制器实例的句柄https://docs.angularjs.org/api/ng/service/ $controller likevar ctrlToTest = $controller('EditorCtrl')(newTestScope); 要创建一个新的测试范围,您可以使用var newTestScope = $rootScope.$new()

于 2016-03-12T09:25:00.383 回答