我正在尝试对先前编写的指令进行单元测试,而对于我的第一个单元测试,我要做的就是检查指令范围内的变量。
但是,每次我尝试在html元素上运行方法isolatedScope()
时,都会收到错误elem.isolatedScope is not a function
。
一件奇怪的事情是,当我在javascript控制台上对元素运行$compile
之后立即设置断点时,我能够打印指令隔离范围。
尝试将我的isolatedScope
设置为如下所示的变量,将始终导致错误elem.isolatedScope is not a function
。
describe('directive: wikis', function() {
var $scope, elem, isolated;
beforeEach(module('app'));
beforeEach(inject(function(_$compile_, _$rootScope_){
$scope = _$rootScope_.$new();
elem = angular.element('<wikis></wikis>');
elem = _$compile_(elem)($scope);
isolated = elem.isolatedScope()
isolated.$digest();
}));
describe('$scope should be defined', function(){
it('data should be empty object', function() {
expect(isolated.data).to.be.null;
});
});
});
对我可能做错的事情有任何想法吗?
最佳答案
It is isolateScope
,而不是isolatedScope
。
隔离范围和隔离范围术语可以互换使用,但是第一个is preferred in official sources(它可能是由框架作者之一创造的):
我们想要做的是将指令内的作用域分开
从外部作用域,然后将外部作用域映射到指令的
内部范围。我们可以通过创建孤立的对象来做到这一点
范围。