Angularjs 让jasmine和angular一起工作有困难
我很难理解如何设置Jasmine与Angular一起工作,以便进行测试。我遵循标题为“测试控制器”下的说明。根据文档,你应该像平常一样定义你的应用程序和控制器(这是从文档中粘贴的): 然后您应该将其作为您的测试套件代码,例如(也从文档中粘贴) 但有几件事我非常困惑Angularjs 让jasmine和angular一起工作有困难,angularjs,unit-testing,jasmine,Angularjs,Unit Testing,Jasmine,我很难理解如何设置Jasmine与Angular一起工作,以便进行测试。我遵循标题为“测试控制器”下的说明。根据文档,你应该像平常一样定义你的应用程序和控制器(这是从文档中粘贴的): 然后您应该将其作为您的测试套件代码,例如(也从文档中粘贴) 但有几件事我非常困惑 文档解释说,您需要使用angularmocks来加载控制器,但在它们的示例中,它们没有将ngmock声明为应用程序依赖项(请参见上面粘贴的第一块代码) 它说您可以使用angular.mock.inject将控制器注入当前上下文。我加载
angularmocks
来加载控制器,但在它们的示例中,它们没有将ngmock
声明为应用程序依赖项(请参见上面粘贴的第一块代码)angular.mock.inject
将控制器注入当前上下文。我加载了脚本,现在全局作用域上有一个angular.mock
,但它没有inject
方法。此外,由于测试代码在控制器之外运行,我不明白在angular应用程序中使用ngMocks
依赖项如何帮助提供注入控制器的全局方法。这整件事对我来说毫无意义模块
也是如此。它说你可以在每个模块('app')之前将其用于
,它由angular mock
提供,但angular.mock没有模块
方法如果有人能解释我做错了什么,我将非常感激 所以我发现问题在于我的
角度模拟的脚本标签是之前的我的Jasmine脚本标签是在之后的。在典型的“文档”精神中,这一点没有被提及。重新排列脚本标记后,module
和inject
都是全局可用的方法
所以要回答我的第一个问题,您不需要将ngMock
放在依赖项中。这回答了问题2和问题3,因为模块
和注入
现在都在全球范围内可用
因此,脚本需要按此顺序放置
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine-html.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/boot.js"></script>
<!--angluar mocks script MUST go after the other declarations otherwise it won't add the inject and module methods to the scope -->
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-mocks.js"></script>
所以我发现问题在于,我的角度模拟的脚本标记在之前我的Jasmine脚本标记在之后。在典型的“文档”精神中,这一点没有被提及。重新排列脚本标记后,module
和inject
都是全局可用的方法
所以要回答我的第一个问题,您不需要将ngMock
放在依赖项中。这回答了问题2和问题3,因为模块
和注入
现在都在全球范围内可用
因此,脚本需要按此顺序放置
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine-html.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/boot.js"></script>
<!--angluar mocks script MUST go after the other declarations otherwise it won't add the inject and module methods to the scope -->
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-mocks.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine-html.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/boot.js"></script>
<!--angluar mocks script MUST go after the other declarations otherwise it won't add the inject and module methods to the scope -->
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-mocks.js"></script>