Тестирование углового кода, завернутого в $ scope. $ Apply () в jasmine

0

Я пытаюсь протестировать следующий код, который работает только в том случае, если $scope.checkOutDate не определен в первую очередь.

$scope.checkInUpdatesCheckOutDate = function(checkOutViewValue){
  var checkInDateInMilliseconds = new Date($scope.checkInDate).getTime(),
    InMilliseconds = new Date(checkOutViewValue).getTime(),
    diffBetweenCheckOutAndCheckIn = Math.floor((checkOutDateInMilliseconds - checkInDateInMilliseconds) / oneDay);

  if(diffBetweenCheckOutAndCheckIn > 0){
    $scope.$apply(function(){
      $scope.checkOutDate = $filter('date')(new Date(checkOutViewValue).getTime(), 'EEEE, M/dd/yyyy');
      $scope.nights = diffBetweenCheckOutAndCheckIn;
    });
  }
}

Но когда я запускаю свой тест на жасмин и тестирую $ scope.checkOutDate, он никогда не изменяется с неопределенного. Моя функция должна установить $scope.checkOutDate равным checkOutViewValue (текущее значение на входе в представлении).

Вот мой тест:

describe('checkInUpdatesCheckOutDate', function(){

      it('should work', function(){
        $scope.checkInDate = '9/17/15';
        var checkOutViewValue = '9/20/15';
        var result = $filter('date')(new Date(checkOutViewValue).getTime(), 'EEEE, M/dd/yyyy');
        $scope.checkInUpdatesCheckOutDate ();

        expect($scope.checkOutDate).toEqual(result);
      });
    });
Теги:
jasmine

2 ответа

0

Вместо того, чтобы вводить код внутри функции $scope.$apply, просто вызовите $scope.$digest() в нем

0

Вызовите $scope.$apply() сразу после вызова функции. Это должно вызвать цикл "дайджест" и выполнить код в блоке "применить".

  • 0
    У меня не получилось, к сожалению :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню