gpt4 book ai didi

javascript - angularjs 单元测试何时使用 $rootScope.$new()

转载 作者:行者123 更新时间:2023-11-29 16:10:49 26 4
gpt4 key购买 nike

我真的不明白什么时候应该在我的 Angular 单元测试中使用 $rootScope = $rootScope.$new() 。这 chop 了您在许多单元测试示例中看到的内容。但在以下示例中不起作用:

angular.module("app.root", []).factory("rootFct", function ($rootScope) {
$rootScope.amount = 12;
return {
getAmount: function () {
return ($rootScope.amount + 1);
}
}
});

关联的单元测试不起作用:

describe('Amount Tests', function() {
var rootFct, $rootScope;

beforeEach(function() {
angular.mock.module("app.root");
angular.mock.inject(function (_rootFct_, _$rootScope_) {
$rootScope = _$rootScope_.$new();
rootFct = _rootFct_;
});
});

it('Set Amount in rootScope on 10', function() {
var result = rootFct.getAmount();
expect(result).toBe(13);
$rootScope.amount = 15;
result = rootFct.getAmount();
expect(result).toBe(16);
});
});

它只在我改变的时候起作用

$rootScope = _$rootScope_.$new();

$rootScope = _$rootScope_;

所以我真的不明白什么时候使用 $new() 以及它有什么用?

最佳答案

$new() is mainly used when creating a new scope out of an existing scope.

您的代码已经在服务中注入(inject)了 rootScope,因此不会有任何区别。

$new() 可以在你想从有/没有隔离的父作用域中获取一些属性时使用。

它需要两个参数 isolate 和 parent。如果需要与父范围隔离,则需要使用隔离( bool 值)。Parent (object) 显式定义父作用域。

请注意,手动创建的新作用域也需要手动销毁。

关于它的更多信息 here

关于javascript - angularjs 单元测试何时使用 $rootScope.$new(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28536866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com