Получите объем настраиваемого контрольного контроллера в тесте Жасмин

Я пытаюсь область доступа контроллера, прикрепленного с помощью ** моей пользовательской директивы angular ** при тестировании в жасмине.

app.directive('MyDirective', function(){
return {
         template:...,
         scope:...,
         controller: function($scope){
                $scope.clickMe = function() {
                    ....
                  };
            $scope.message = "";
         }
 }

Я хочу написать тест в жасмине, чтобы проверить, определен ли метод clickMe или нет.

 it('should have 3 methods', function() {
    expect(dscope).not.toBe(null);
    expect(scope).not.toBe(null);
    expect(angular.isFunction(dscope.clickMe)).toBe(true);
    expect(dscope.message).toBe(true); }

В beforeEach() я объявлял переменные scope и dscope следующим образом:

beforeEach(inject(function(  $rootScope, $compile){
    scope = $rootScope.$new();      

    element = angular.element("<div my-directive></div>");

    //bind the empty scope into the directive
    $compile(element)(scope);

    //access to internal directive scope of our element
    dscope = element.scope();  }));

Но когда я запускаю тест, я получаю " ожидать, что false будет истинным". * и ожидать, что undefined не будет null для scope.message

Ответ 1

Если вы используете Angular 1.2+, вам нужно использовать...

dscope = element.isolateScope();

вместо...

dscope = element.scope();

для доступа к изолированным областям. Я не могу сказать, изолирована ли область видимости, потому что вы опустили объявление области видимости своей директивы в вопросе, но я бы предположил, что это происходит здесь.

См. этот вопрос о Github для объяснения разницы между .scope() и .isolateScope()