错误:[$ injector:modulerr] angularjs 1.7和茉莉花

时间:2019-02-26 05:55:35

标签: angularjs unit-testing jasmine karma-jasmine

controller.js

  var testApp = angular.module('testApp', ['testModule']);

  angular.module('testModule')
    .component('testModule', {
      template: '<p> some things will be here</p>',
      controller: [
        '$scope', '$http', 
        function testController($scope, $http){
          $scope.z = 0;
          $scope.sum = function() {
            $scope.z = $scope.x + $scope.y;
          };
        }
      ]
    });

test.js

describe('testModule', function () {

    beforeEach(module('testApp'));

    var $controller;

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

    describe('tests', function () {

          // directive test i




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

          // service  test
          it('http get test', inject(function($http, $httpBackend){
            var $scope = {};
            var controller = $controller('testController', { $scope: $scope });
            $http.get('http://localhost/ibrahim')
              .success(function(data, status, headers, config){
                $scope.valid = true;
                $scope.response = data;
              })
              .error(function(data, status, headers, config){
                $scope.vaid = false;
              });

              $httpBackend
                .when('GET', 'http://localhost/ibrahim')
                .respond(200, {
                    name: 'ibrahim',
                    country: 'sweden'
                });

              $httpBackend.flush();

              expect($scope.valid).toBe(true);
              expect($scope.response).toEqual({
                name: 'ibrahim',
                country: 'sweden'
              });
          }));

      }
    );
  });

我收到此错误

   Error: [$injector:modulerr] http://errors.angularjs.org/1.4.0-rc.2/$injector/modulerr?p0=testApp&p1=Error%3A%20%5B%24injector%3Amodulerr%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.4.0-rc.2%2F%24injector%2Fmodulerr%3Fp0%3DtestModule%26p1%3DError%253A%2520%255B%2524injector%253Anomod%255D%2520http%253A%252F%252Ferrors.angularjs.org%252F1.4.0-rc.2%252F%2524injector%252Fnomod%253Fp0%253DtestModule%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A6%253A421%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A23%253A384%250A%2520%2520%2520%2520at%2520a%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A23%253A25)%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A23%253A268%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A37%253A202%250A%2520%2520%2520%2520at%2520n%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A7%253A322)%250A%2520%2520%2520%2520at%2520g%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A37%253A50)%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A37%253A219%250A%2520%2520%2520%2520at%2520n%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A7%253A322)%250A%2520%2520%2520%2520at%2520g%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A37%253A50)%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A6%3A421%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A37%3A476%0A%20%20%20%20at%20n%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A7%3A322)%0A%20%20%20%20at%20g%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A37%3A50)%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A37%3A219%0A%20%20%20%20at%20n%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A7%3A322)%0A%20%20%20%20at%20g%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A37%3A50)%0A%20%20%20%20at%20Object.ab%20%5Bas%20injector%5D%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A40%3A332)%0A%20%20%20%20at%20UserContext.workFn%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular-mocks.js%3F71a3fefebedb617c8cd52b83f351d31a45417323%3A2409%3A56)%0A%20%20%20%20at%20QueueRunner.attempt%20(http%3A%2F%2Flocalhost%3A9876%2FC%3A%2FUsers%2Fibrahim.yazici%2Fnode_modules%2Fjasmine-core%2Flib%2Fjasmine-core%2Fjasmine.js%3F1f336da4025323945fc818c69bdc564a85081e4e%3A5462%3A44)
        at lib/angular.min.js:6:421
        at lib/angular.min.js:37:476
        at n (lib/angular.min.js:7:322)
        at g (lib/angular.min.js:37:50)
        at Object.ab [as injector] (lib/angular.min.js:40:332)
        at UserContext.workFn (lib/angular-mocks.js:2409:56)
        at <Jasmine>
    Error: [$injector:modulerr] http://errors.angularjs.org/1.4.0-rc.2/$injector/modulerr?p0=testApp&p1=Error%3A%20%5B%24injector%3Amodulerr%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.4.0-rc.2%2F%24injector%2Fmodulerr%3Fp0%3DtestModule%26p1%3DError%253A%2520%255B%2524injector%253Anomod%255D%2520http%253A%252F%252Ferrors.angularjs.org%252F1.4.0-rc.2%252F%2524injector%252Fnomod%253Fp0%253DtestModule%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A6%253A421%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A23%253A384%250A%2520%2520%2520%2520at%2520a%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A23%253A25)%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A23%253A268%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A37%253A202%250A%2520%2520%2520%2520at%2520n%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A7%253A322)%250A%2520%2520%2520%2520at%2520g%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A37%253A50)%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A37%253A219%250A%2520%2520%2520%2520at%2520n%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A7%253A322)%250A%2520%2520%2520%2520at%2520g%2520(http%253A%252F%252Flocalhost%253A9876%252Fbase%252Flib%252Fangular.min.js%253F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%253A37%253A50)%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A6%3A421%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A37%3A476%0A%20%20%20%20at%20n%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A7%3A322)%0A%20%20%20%20at%20g%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A37%3A50)%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A37%3A219%0A%20%20%20%20at%20n%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A7%3A322)%0A%20%20%20%20at%20g%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A37%3A50)%0A%20%20%20%20at%20Object.ab%20%5Bas%20injector%5D%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular.min.js%3F1fd32b3190c79d3de8452d8f156b7ff0af9e644e%3A40%3A332)%0A%20%20%20%20at%20UserContext.workFn%20(http%3A%2F%2Flocalhost%3A9876%2Fbase%2Flib%2Fangular-mocks.js%3F71a3fefebedb617c8cd52b83f351d31a45417323%3A2409%3A56)%0A%20%20%20%20at%20QueueRunner.attempt%20(http%3A%2F%2Flocalhost%3A9876%2FC%3A%2FUsers%2Fibrahim.yazici%2Fnode_modules%2Fjasmine-core%2Flib%2Fjasmine-core%2Fjasmine.js%3F1f336da4025323945fc818c69bdc564a85081e4e%3A5462%3A44)
        at lib/angular.min.js:6:421
        at lib/angular.min.js:37:476
        at n (lib/angular.min.js:7:322)
        at g (lib/angular.min.js:37:50)
        at Object.ab [as injector] (lib/angular.min.js:40:332)
        at UserContext.workFn (lib/angular-mocks.js:2409:56)
        at <Jasmine>

Chrome 72.0.3626(Windows 10.0.0)错误   {     “ message”:“在afterAll \ n中引发了错误\ n未捕获的错误:[$ injector:nomod] http://errors.angularjs.org/1.4.0-rc.2/ $ injector / nomod?p0 = testModule”,     “ str”:“ afterAll中引发了错误\ n未捕获的错误:[$ injector:nomod] http://errors.angularjs.org/1.4.0-rc.2/ $ injector / nomod?p0 = testModule”   }

如果我仅使用此控制器代码,我就没有错误

  angular.module('testApp', [])
  .controller('testController', function testController($scope, $http) {
    $scope.z = 0;
    $scope.sum = function() {
      $scope.z = $scope.x + $scope.y;
    };
  });

但是我也想测试指令。我不明白如果没有模板怎么办。为什么会出现此错误,我该如何解决?还是有一种无需编写模板即可测试指令的方法?谢谢

2 个答案:

答案 0 :(得分:1)

尝试这个

 var myApp = angular.module('testModule', [])

 myApp.component('testModule', {
 template: '<p> some things will be here</p>',
 controller: [
    '$scope', '$http', 
    function testController($scope, $http){
      $scope.z = 0;
      $scope.sum = function() {
        $scope.z = $scope.x + $scope.y;
      };
    }
  ]
});

var testApp = angular.module('testApp', ['testModule']);

对我有用

答案 1 :(得分:-1)

我相信您还需要像这样注入$compile提供程序:

var $compile, $controller;

...

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

// your test code

查看Testing Directives segment of the official guide以获得更多信息。