J'essaie d'écrire un test d'intégration Ember simple et de continuer à obtenir l'erreur de boucle d'exécution frustrante malgré l'utilisation de ember.run code>. J'ai eu un cauchemar d'un moment à essayer de faire fonctionner ça, si quelqu'un pouvait m'aider, je serais si reconnaissant. Spécifiquement, je peux voir le test de test et commencer à charger la page suivante (comme il le devrait), mais dès que le test se termine, je reçois cette erreur. Cela concerne le deuxième test, les premiers passages (car rien n'est asynchronisé, je crois).
3 Réponses :
Emballage de vos tests dans Si vous souhaitez une aide exacte à ce sujet, vous devez afficher votre code dans la route / contrôleur. P>
J'ai récemment publié un ebook sur la boucle d'exécution, y compris le mécanisme Autorun qui peut être téléchargé ici < / a>. p> ember.run code> ne vous aidera pas car l'erreur que vous obtenez ne se produit pas car le code de test mais le code de votre application. Dans votre signalisation dans la route, vous devez effectuer des demandes asynchrones (comme Ajax ou
Settimeout Code> Même) et dans leurs manutentionnaires, vous effectuez des exécutions d'API Ember (comme le réglage, la transition, tout). P>
Je me rends compte que je suis en retard à la fête, mais voici quand même: P>
Quelque part dans votre composant ou votre code d'application (c'est-à-dire non dans le code de test), vous écoutez probablement un événement en dehors de l'embarcation (par exemple, un événement DOM, via JQuery ou quelque chose comme ça), mais essayez d'interagir avec pendant la course de ce gestionnaire. Ces fonctions de gestionnaire doivent être enveloppées dans Si vous n'enceptez pas vos rappels d'événement dans ember.run.bind () code>, ou ils n'auront pas de runloop lors d'un test.
ember.run.bind () code> définira également
ce code> pour vous pendant le gestionnaire. p>
ember.run.bind () code>, le code fonctionnera probablement toujours sans tracas lors d'une exécution normale de l'application, car la fonctionnalité Autorun trouvera Runloop -Demanding (par exemple, si vous planifiez quelque chose en utilisant
ember.run.schedule () code> pendant le gestionnaire) interactions avec Ember dans le code et démarrez une runloop pour eux, mais il est désactivé dans les tests. p>
J'ai le même problème dans le test d'intégration du composant. L'erreur est:
L'assertion a échoué: vous avez activé le mode de test, qui désactivé le Autorun de Run-Loop. P>
Vous devrez envelopper n'importe quel code avec des effets secondaires asynchrones dans une course. P> BlockQuote>
Et j'ai trouvé la raison du problème des tests d'intégration. Je rends le composant avec le code suivant: p>
xxx pré> après le rendu, la mise à jour
myObject code> comme ci-dessous causer l'erreur.: P>
this.set('param.x',2); //OR: this.set('param', Ember.Object.create({x:1}); //OR: Ember.run(()=>{ Ember.set(myobject,'x',2); });
myObject.set ('x', 2); code> vs. code> this.set ("param.x ', 2); code> m'a aidé, merci!
Que ressemble au code de production (sous test) pour cette application? Mon devin est un certain code asynchrone qui lance ceci mais il est difficile de dire avec plus de détails
Je reçois le même problème, mais seulement dans Firefox, pas chrome. n'ont pas testé de fantôme ou de safari ou c'est-à-dire
Avez-vous trouvé une solution? J'ai le même problème..