我正在尝试对先前编写的指令进行单元测试,而对于我的第一个单元测试,我要做的就是检查指令范围内的变量。

但是,每次我尝试在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(它可能是由框架作者之一创造的):


  我们想要做的是将指令内的作用域分开
  从外部作用域,然后将外部作用域映射到指令的
  内部范围。我们可以通过创建孤立的对象来做到这一点
  范围。

10-01 02:05