2016-02-29 3 views
0

Я создал пользовательскую директиву и хотел бы издеваться над переменной, чтобы заставить тестовую работу работать. Это часть модульного испытания:Как измерить переменную в тестовом модуле?

it('should pass on initialvalue', function() { 
    scope.$apply(function() { 
     scope.initial = 2; 
     scope.Repairer = null; 
    }); 
    expect(elementScope.initial).toEqual(2); 
    }); 

Директива вызывает сервис, когда установлена ​​начальная переменная. Оба теста терпят неудачу, потому что в директиве у меня есть переменная, называемая запросом, которая неправильно высмеивается. Вопрос в том, как я могу издеваться над этим? Или мне нужно поместить переменную запроса в область видимости? Это часть кода:

if (scope.Repairer) { 

         console.log('calling scriptservice'); 
         var request = { 
          allocationProcess: (scope.$parent.lodgement.searchSettings.automatic.visible) ? 'automatic' : 'direct', 
          allocationSource: 'internal', 
          brand: brandScriptTag, // lookup brand scripting name 
          includeSegment: false, 
          relationship: scope.repairer.relationshipCode, 
          ruralSearch: scope.repairer.isRural, 
          state: scope.$parent.lodgement.claimLocation 

         }; 
         scriptingService.getScript(request).then(function (scripts) { 
          scope.scripts = scripts; 
         }); 
        } else { 
         scope.scripts = null; 
        } 

plunker исх: http://plnkr.co/edit/juDwpot727jzxzzWeaJl?p=preview

ответ

0

Вы обращаетесь к объекту на $parent сферу, так I'de сделать Somthing как:

$rootScope.lodgement = jasmine.any(Object); 

Однако, ваш код является проблематичным, так как он много подумывает об этом lodgement ...

//it's better to use jasmine.any(Object) 
//$rootScope.lodgement = jasmine.any(Object); 
var lodgement_mock = {searchSettings:{automatic:{visible:false}}}; 
$rootScope.lodgement = lodgement_mock; 

стр. вы имели другую ошибку в своей директиве - Вы пробовали доступ scope.repairer вместо scope.Repairer

проверить это: http://plnkr.co/edit/OFTZff53BXGNLQqRfE8L?p=preview