Directiva Unit Test Angularjs, que contiene tiempo de espera privado, con Jasmine

Tengo una directiva, que debería comportarse de manera diferente, dependiendo de cuánto tiempo pasó desde su inicialización:

am.directive('showText', () => ({
  restrict: 'E',
  replace: true,
  scope: {
    value: '@'
  },
  controller: ($scope, $timeout) => {
    console.log('timeout triggered');

    $scope.textVisible = false;

    let visibilityCheckTimeout = $timeout(() => {
      if (parseInt($scope.value, 10) < 100) {
        $scope.textVisible = true;
      }
    }, 330);

    // Clear timeout upon directive destruction
    $scope.$on('$destroy', $timeout.cancel(visibilityCheckTimeout));
  },
}));

El problema es que cuando trato de probarlo con Jasmine, parece que no puedo encontrar una manera de activar este tiempo de espera de ninguna manera. Ya probé un$timeout.flush() y$timeout.verifyNoPendingTasks() (que en realidad arroja un error, si voy a comentarflush llamada). Pero todavía no está activando la ejecución de devolución de llamada de ese tiempo de espera

describe('showText.', () => {
  let $compile;
  let $rootScope;
  let $scope;
  let $timeout;

  const compileElement = (rootScope, value = 0) => {
    $scope = rootScope.$new();
    $scope.value = value;

    const element = $compile(`
      <show-text
        value="value"
      ></show-text>
    `)($scope);

    $scope.$digest();

    return element;
  };

  beforeEach(() => {
    module('app.directives.showText');

    inject((_$compile_, _$rootScope_, _$timeout_) => {
      $compile = _$compile_;
      $rootScope = _$rootScope_;
      $timeout = _$timeout_;
    });
  });

  it(`Process lasts > 0.33s. Should show text.`, () => {
    const VALUE = 30;
    const element = compileElement($rootScope, VALUE);
    const elementContent = element.find('.show-text__content');

    $timeout.flush(1000);

    $timeout.verifyNoPendingTasks();

    $rootScope.$digest();

    expect(element.isolateScope().textVisible).toBeTruthy();
    expect(elementContent.length).toEqual(1);
    expect(elementContent.text().trim()).toBe('Example text');
  });
});

La prueba falla.

No puedo encontrar lo que estoy haciendo mal. ¿Algún consejo sobre cómo probar adecuadamente este caso?

Gracias.

UPD Después de una investigación, descubrí que en este caso de prueba en particular, encompileElement función,value la propiedad no está siendo evaluada por$compile Servicio. E igual"value". Ya he usado la misma función 10 veces y no puedo entender por qué no se necesita$scope.valueLa propiedad de como era antes.

Respuestas a la pregunta(0)

Su respuesta a la pregunta