Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Javascript 角罐的茉莉花试验';我找不到我的控制器_Javascript_Angularjs_Jasmine - Fatal编程技术网

Javascript 角罐的茉莉花试验';我找不到我的控制器

Javascript 角罐的茉莉花试验';我找不到我的控制器,javascript,angularjs,jasmine,Javascript,Angularjs,Jasmine,我无法为Angular应用程序设置Jasmine测试。Jasmine找不到我的控制器(我怀疑它根本找不到我的应用程序) 下面的示例演示了我遇到的问题: angular.module('testMod', []) .controller('testController', ['$scope', function($scope) { $scope.person = {name: 'Jim', age: 14}; function innerFunction(

我无法为Angular应用程序设置Jasmine测试。Jasmine找不到我的控制器(我怀疑它根本找不到我的应用程序)

下面的示例演示了我遇到的问题:

angular.module('testMod', [])
    .controller('testController', ['$scope', function($scope) {
        $scope.person = {name: 'Jim', age: 14};

        function innerFunction() {}

    }]);
测试:

它在线路上失败了

myController = $controller('testController', {$scope: $rootScope});
我看到的错误是:

Error: [ng:areq] Argument 'testController' is not a function, got undefined
我正在为Jasmine使用独立的SpecRunner.html,并加载了我的应用程序和规范:

   <!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Jasmine Spec Runner v2.0.0</title>

  <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.0.0/jasmine_favicon.png">
  <link rel="stylesheet" type="text/css" href="lib/jasmine-2.0.0/jasmine.css">

  <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script>
  <!-- angular-mock must be loaded AFTER Jasmine -->
  <script type="text/javascript" src="../src/angular-1.2.5.min.js"></script>
  <script type="text/javascript" src="../src/angular-mock-1.2.5.js"></script>

    <!-- include source files here... -->
  <script type="text/javascript" src="../src/testMod.js"></script>

  <!-- include spec files here... -->
  <script type="text/javascript" src="spec/testMod.Test.js"></script>

</head>

<body>
</body>
</html>

Jasmine Spec Runner v2.0.0版

非常感谢您的建议-我已经为此挣扎了一段时间。

您的测试有几个问题:

  • 您没有正确地注入范围
  • 您没有正确使用范围
  • 有一个tobedefine()方法来检查函数是否已定义,无需进行类型检查
  • 将测试中的代码更改为

    describe('testMod suite', function() {
    
    var $rootScope, testController;
    
    beforeEach(module('testMod'));
    beforeEach(inject(function($controller, $rootScope) {
        myScope = $rootScope.$new();
        ctrl = $controller('testController', {
            $scope: myScope
        });
    }));
    
    it('works', function() {
        expect( myScope.innerFunction).toBeDefined();
    });
    });
    
    另外,将角度控制器代码更改为:

    angular.module('testMod', [])
    .controller('testController', ['$scope', function($scope) {
        $scope.person = {name: 'Jim', age: 14};
    
        $scope.innerFunction = function() {}
    
    }]);
    
    angular.module('testMod', [])
    .controller('testController', ['$scope', function($scope) {
        $scope.person = {name: 'Jim', age: 14};
    
        $scope.innerFunction = function() {}
    
    }]);