31 votes

test de scénario angulaire e2e - attendre la fin des événements clés avant de poursuivre

Comment sont les gens de l'écriture angulaire e2e tests qui impliquent le déclenchement d'une séquence d'événements de l'UI? La nature asynchrone de scénario semble rendre difficile.

détails: Je suis en train d'écrire des tests pour une application qui a beaucoup de gestion des clés pour aider à la vitesse de l'édition d'une forme particulière. J'ai réuni une extension du clavier pour le scénario dsl (voir ci-dessous), mais seul le premier événement majeur de un test a aucun effet. c'est à dire

keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down
expect(element('*:focus').text()).toEqual('00:04');
keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down
expect(element('*:focus').text()).toEqual('');  // but equals 00:04

La deuxième keydown ne fait rien, car il ne trouve pas de *:focus sur route de la clé (même si il y en a un sur l'écran). Source de confusion.

angular.scenario.dsl('keyboard', function() { 
    var chain  = {}; 
    chain.keydown = function(selector, keyEvent, keyCode, shift, ctrl) { 
        return this.addFutureAction("keyEvent", function($window, $document, done) { 
            var jQuery = $window.$; 
            var e = jQuery.Event(keyEvent);
            e.keyCode = keyCode; // # Some key code value
            e.altKey = false;
            e.ctrlKey = ctrl;
            e.shiftKey = shift;
            if (selector == null) selector = '*:focus';
            var j = jQuery(selector);
            if (j == null) j = jQuery('body');
            j.trigger(e);
            done(); 
        }); 
    }; 
    return function() { 
        return chain; 
    }; 
}); 

1voto

CaioToOn Points 9069

L'utilisateur semble avoir abandonné cette question, mais comme je l'ai dit, c'est probablement un problème avec son gestionnaire d'événements keydown .

Faites un Plnker ici avec exactement le même code et tout fonctionne comme prévu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X