ng-app 指定的模块,而后创建一个 $rootScope 以及一个管理依赖的 $injector,而后依赖将通过 $injector 自动注入。在测试的时候,需要手动处理这个过程。因为在编写测试的时候,希望的是能够进行单元性的测试,能够针对特定的模块进行测试。所以在编写 AngularJS 测试的时候,我们需要手动去引用某个模块 ,同时手动创建 $rootScope 和手动引入依赖。AngularJS 提供了 ngModule 这个模块,包含一些方法用来处理这个过程。这个过程主要使用到的是两个方法,分别是 module 以及 inject 方法。前者用于引入模块,后者用于处理依赖。例如: | describe("type: name", function() { var $scope, myService, $location; // 在每个测试用例执行之前,引用 app 模块 beforeEach(module("app")); // 在每个测试用例执行之前,注入依赖 beforeEach(inject(function($rootScope, _myService_, _$location_) { $scope = $rootScope.$new(); myService = _myService_; $location = _$location_; })); it("should work", function() { // Do something // Expect something }); }); |
inject 方法内,有两个参数都有前后的下划线,这个下划线实际上是为了便于编写测试(使得测试内局部变量与依赖一致的名字),AngularJS 会忽略这前后下划线,并找到对应的依赖。一些AngularJS相关文章链接:AngularJS权威教程 清晰PDF版 http://www.linuxidc.com/Linux/2015-01/111429.htm希望你喜欢,并分享我的工作~带你走近AngularJS系列: