Sim*_*ion 2 unit-testing jasmine angularjs
这总是让我感到困惑,并且想知道在编写单元测试时我们会使用什么,如何,为什么以及何时使用.
var $rootScope;
beforeEach(inject(function(_$rootScope_) {
$rootScope = _$rootScope_;
}));
Run Code Online (Sandbox Code Playgroud)
var $scope;
beforeEach(inject(function(_$scope_) {
$scope= _$scope_;
}));
Run Code Online (Sandbox Code Playgroud)
第二种方法将是失败.由于进样器中$scope没有$scope存在的服务(与$ rootScope提供程序相对),因此无法注入.如果需要从rootScope创建子作用域,请注入$ rootScope并执行$scope = $rootScope.$new();
例:-
var $rootScope, $scope, $isolatedScope;
beforeEach(inject(function(_$rootScope_) {
$rootScope = _$rootScope_;
$scope = _$rootScope_.$new(); //inherited scope
$isolatedScope = _$rootScope_.$new(true) //isolated scope
}));
// .....
beforeEach(function(){
$controller('myControllThatUsesScope', {$scope:$scope});
});
Run Code Online (Sandbox Code Playgroud)
$scope通常是一个动态或特殊的依赖项,它被注入一个角度实体(如控制器,指令链接函数).这就是为什么当您使用$controllerService 实例化一个控制器(具有依赖于$ scope)的控制器时,您需要$scope在本地中显式提供,而不是在注入器中可用的其他依赖项(如服务),类似地,您需要用于$rootScope访问范围方法,例如在服务中事件api.
只是为了更具体地提出你的问题:
$rootScope在需要时注入并创建子范围.$scope但你可以注射$rootScope | 归档时间: |
|
| 查看次数: |
908 次 |
| 最近记录: |