Javascript ReferenceError:模块未在Jasmine js中定义

Javascript ReferenceError:模块未在Jasmine js中定义,javascript,angularjs,jasmine,Javascript,Angularjs,Jasmine,我从Angular和单元测试开始,这是我的第一个代码,它不起作用。我寻找解决办法,但我不知道我做错了什么。如果有人能向我解释是什么错误,我会感谢你 这是我所有的代码 <!DOCTYPE html> <html lang="en"> <head> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js

我从Angular和单元测试开始,这是我的第一个代码,它不起作用。我寻找解决办法,但我不知道我做错了什么。如果有人能向我解释是什么错误,我会感谢你

这是我所有的代码

<!DOCTYPE html>
<html lang="en">

<head>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-mocks.js"></script>
<script src="jasmine.js"></script>
<script src="jasmine-html.js"></script>
<script src="boot.js"></script>
<link rel="shortcut icon" type="image/png" href="jasmine_favicon.png">
<link rel="stylesheet" href="jasmine.css">

</head>

<body  ng-app = "myApp">

<div ng-controller = "MyCtrl">
{{greeting}}
</div>
<br><br><br>

<script>

    <!-- CODE -->

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

    myApp.controller('MyCtrl', ['$scope', function($scope) {
        $scope.greeting = 'Hello World!';
    }]);

    <!-- JASMINE -->

    describe('myApp', function () {
        var scope,
        controller;
        beforeEach(function () {
            module('myApp');
        });

        describe('MyCtrl', function () {
            beforeEach(inject(function ($rootScope, $controller) {
                scope = $rootScope.$new();
                controller = $controller('MyCtrl', {
                    '$scope': scope
                });
            }));
            it('sets the greeting', function () {
                expect(scope.greeting).toBe('Hello World!');
            });

        });
    });

    describe('JavaScript addition operator', function () {
        it('adds two numbers together', function () {
            expect(1 + 2).toEqual(3);
        });
    });
</script>

</body>

</html>

{{问候语}



var myApp=angular.module('myApp',[]); 控制器('MyCtrl',['$scope',函数($scope){ $scope.greeting='Hello World!'; }]); 描述('myApp',函数(){ var范围, 控制器; beforeach(函数(){ 模块(“myApp”); }); 描述('MyCtrl',函数(){ beforeach(注入(函数($rootScope,$controller){ scope=$rootScope.$new(); 控制器=$controller('MyCtrl'{ “$scope”:作用域 }); })); 它('设置问候语',函数(){ expect(scope.greeting).toBe('helloworld!'); }); }); }); 描述('JavaScript加法运算符',函数(){ 它('将两个数字相加',函数(){ 期望(1+2)、toEqual(3); }); });

提前感谢

您的脚本顺序错误。您应该首先包括与Jasmine相关的脚本,然后是用于角度和角度模拟的脚本

<!DOCTYPE html>
<html lang="en">

<head>
<!--Scripts for Jasmine-->
<script src="jasmine.js"></script>
<script src="jasmine-html.js"></script>
<script src="boot.js"></script>

<!--Script for Angular-->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>

<!--Scripts for Angular-Mocks-->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-mocks.js"></script>
<link rel="shortcut icon" type="image/png" href="jasmine_favicon.png">
<link rel="stylesheet" href="jasmine.css">
</head>

<body  ng-app = "myApp">

<div ng-controller = "MyCtrl">
{{greeting}}
</div>
<br><br><br>

<script>

<!-- CODE -->

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

myApp.controller('MyCtrl', ['$scope', function($scope) {
    $scope.greeting = 'Hello World!';
}]);

<!-- JASMINE -->

describe('myApp', function () {
    var scope,
    controller;
    beforeEach(function () {
        module('myApp');
    });

    describe('MyCtrl', function () {
        beforeEach(inject(function ($rootScope, $controller) {
            scope = $rootScope.$new();
            controller = $controller('MyCtrl', {
                '$scope': scope
            });
        }));
        it('sets the greeting', function () {
            expect(scope.greeting).toBe('Hello World!');
        });

    });
});

describe('JavaScript addition operator', function () {
    it('adds two numbers together', function () {
        expect(1 + 2).toEqual(3);
    });
});

{{问候语}



var myApp=angular.module('myApp',[]); 控制器('MyCtrl',['$scope',函数($scope){ $scope.greeting='Hello World!'; }]); 描述('myApp',函数(){ var范围, 控制器; beforeach(函数(){ 模块(“myApp”); }); 描述('MyCtrl',函数(){ beforeach(注入(函数($rootScope,$controller){ scope=$rootScope.$new(); 控制器=$controller('MyCtrl'{ “$scope”:作用域 }); })); 它('设置问候语',函数(){ expect(scope.greeting).toBe('helloworld!'); }); }); }); 描述('JavaScript加法运算符',函数(){ 它('将两个数字相加',函数(){ 期望(1+2)、toEqual(3); }); });


脚本的顺序错误。您应该首先包括与Jasmine相关的脚本,然后是用于角度和角度模拟的脚本

<!DOCTYPE html>
<html lang="en">

<head>
<!--Scripts for Jasmine-->
<script src="jasmine.js"></script>
<script src="jasmine-html.js"></script>
<script src="boot.js"></script>

<!--Script for Angular-->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>

<!--Scripts for Angular-Mocks-->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-mocks.js"></script>
<link rel="shortcut icon" type="image/png" href="jasmine_favicon.png">
<link rel="stylesheet" href="jasmine.css">
</head>

<body  ng-app = "myApp">

<div ng-controller = "MyCtrl">
{{greeting}}
</div>
<br><br><br>

<script>

<!-- CODE -->

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

myApp.controller('MyCtrl', ['$scope', function($scope) {
    $scope.greeting = 'Hello World!';
}]);

<!-- JASMINE -->

describe('myApp', function () {
    var scope,
    controller;
    beforeEach(function () {
        module('myApp');
    });

    describe('MyCtrl', function () {
        beforeEach(inject(function ($rootScope, $controller) {
            scope = $rootScope.$new();
            controller = $controller('MyCtrl', {
                '$scope': scope
            });
        }));
        it('sets the greeting', function () {
            expect(scope.greeting).toBe('Hello World!');
        });

    });
});

describe('JavaScript addition operator', function () {
    it('adds two numbers together', function () {
        expect(1 + 2).toEqual(3);
    });
});

{{问候语}



var myApp=angular.module('myApp',[]); 控制器('MyCtrl',['$scope',函数($scope){ $scope.greeting='Hello World!'; }]); 描述('myApp',函数(){ var范围, 控制器; beforeach(函数(){ 模块(“myApp”); }); 描述('MyCtrl',函数(){ beforeach(注入(函数($rootScope,$controller){ scope=$rootScope.$new(); 控制器=$controller('MyCtrl'{ “$scope”:作用域 }); })); 它('设置问候语',函数(){ expect(scope.greeting).toBe('helloworld!'); }); }); }); 描述('JavaScript加法运算符',函数(){ 它('将两个数字相加',函数(){ 期望(1+2)、toEqual(3); }); });


我认为您的意思是在每个函数之前在
中键入
angular.module('myApp')
。这样可以删除“ReferenceError:module未定义”,但“ReferenceError:inject未定义”仍然保留。我能为那个特殊的错误做些什么?谢谢,我明白了。你需要在装载前装载茉莉花。将
标记移动到
jasmine.js
jasmine html.js
的上方。这就是
angularmocks.js
检测测试环境的方式。之后,您可以再次使用
module
而不是
angular.module
。它不会更改状态。“ReferenceError:inject未定义”保留,通过将
jasmine
jasmine html
的标记移到
angular
angular mock
的标记上方,不允许删除angular.module@MikeCI认为您是想在每个
函数之前的
中键入
angular.module('myApp')
。这样可以删除“ReferenceError:module未定义”,但“ReferenceError:inject未定义”仍然保留。我能为那个特殊的错误做些什么?谢谢,我明白了。你需要在装载前装载茉莉花。将
标记移动到
jasmine.js
jasmine html.js
的上方。这就是
angularmocks.js
检测测试环境的方式。之后,您可以再次使用
module
而不是
angular.module
。它不会更改状态。“ReferenceError:inject未定义”保留,通过将
jasmine
jasmine html
的标记移到
angular
angular mock
的标记上方,不允许删除angular.module@米凯克