¿cómo el tiempo de espera de trabajo en angular pruebas se ejecutan en el karma

Me encanta el uso de registro de la consola para la retroalimentación quizás demasiado, y a veces corro en el código que el convenio que hemos añadido $el tiempo de espera en la directiva/servicio/controlador, a veces tan largo como 500 ms, y ahora el problema es que durante la prueba de unidad, me di cuenta de que sólo la consola.los registros directamente bajo el constructor se envía al karma y la salida a la pantalla.

envuelto registros de la consola bajo tiempo de espera o más bien envuelto afirmaciones debajo de los $tiempo de espera no producen ningún resultado, si se ignora, ¿cuál es la solución para los tiempos de espera?

InformationsquelleAutor user2167582 | 2013-10-21

1 Kommentar

  1. 88

    En su unidad de pruebas, carga ngMock, que sobrescribe el orignal $timeout con su imitación. Simulacro de $timeout no funciona igual que el real JavaScript timeout. Para conseguir que se llame el código que hay en su interior, usted tiene que hacer $timeout.flush() de su unidad de prueba.

    Si $timeout trabajado como el real timeout, que he tenido que escribir asincrónica unidad de pruebas para todas las funciones que uso $timeout.

    He aquí un ejemplo de una versión simplificada de la función que utiliza $timeout y cómo puedo probar que:

    gaApi.getReport = function() {
      report = $q.defer()
    
      $timeout(function() {
        $http({method: 'GET', url: 'https://www.googleapis.com/analytics/v3/data/ga'})
          .success(function(body) {
            report.resolve(body)
          })
      }, 300)
    
      return report.promise
    }

    Una prueba de unidad:

    describe('getReport', function() {
      it('should return report data from Google Analytics', function() {
        gaApi.getReport().then(function(body) {
          expect(body.kind).toBe('analytics#gaData')
        })
    
        $timeout.flush()
        $httpBackend.flush()
      })
    })
    • En mi humilde opinión, el Angular equipo de derecho en que la escritura asincrónica pruebas chupa. flush() FTW.
    • Me encontré con un artículo que se utiliza $tiempo de espera.ras en la parte superior de la prueba de oposición para después. ¿Cuál es la diferencia en este enfoque? jasonwatmore.com/post/2015/03/06/…

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea