Non interceptée Erreur: Échec de l'Assertion: l'appel d'ensemble sur l'objet détruit
de travail en braise-cli de test. Après tous les tests passés, il renvoie supplémentaire de deux test avec des erreurs.
Erreur non interceptée: Assertion Failed: l'appel d'ensemble sur l'objet détruit
Source : '../dist/assets/fournisseur.js:13269'
c'est une unité de test de configuration
import Ember from "ember";
import { test,moduleFor } from 'ember-qunit';
import startApp from '../helpers/start-app';
var App;
module('An Integration test',{
setup:function(){
App=startApp();
},
teardown: function() {
Ember.run(App, 'destroy');
}
});
- Avez-vous jamais comprendre cela?
Vous devez vous connecter pour publier un commentaire.
C'est soit parce que le résultat d'une promesse ou tout autre différés code vous ne cochez pas la détruire statut d'un objet, ou parce que vous n'avez pas de démontage de quelque chose qui a été d'installation et d'interagir avec d'événements DOM ou quoi que ce soit externe à la base de Braise.
J'ai utilisé ce, en particulier, sur certains plugins jQuery qui je l'ai associé à la Braise, et pendant les tests les plugins étaient en train de détruire trop lentement, et j'ai été ensuite soit pas à l'aide d'une exécution de la boucle, ou de ne pas avoir vérifié la destruction de statut de la Braise à l'objet que je a été la manipulation.
Vous pouvez le faire avec:
Aussi penser à la destruction de tout les plugins jQuery qui pourraient avoir été initialisés dans le code de votre point de vue (rien d'installation dans
didInsertElement
devrait être de démontage danswillDestroyElement
par exemple).eventManager
propriété de la vue à la place (voir la section emberjs.com/api/classes/Ember.View.html#toc_event-managers). De toute façon, vous pourriez avoir écouté quelques jQuery événements et essayez d'appeler certaines méthodes (y compris les get/set) de braise objets. Si donc, assurez-vous de retirer les écouteurs d'événement dans lewillDestroyElement
, et si vous ne pouvez pas, surround de votre événement en fonction de son corps avec ceif
j'ai écrit, alors que dans le cas où la Braise à l'objet est déjà détruit ou est en train de détruire, vous n'aurez pas d'erreursOk j'ai du mal avec chose de similaire. Donc, fondamentalement, lorsque vous avez des "ce.set()" à l'intérieur d'une promesse, il se peut que la promesse prend trop de temps à résoudre, et l'utilisateur déjà cliqué loin à partir de cette page, dans ce cas, vous essayez de créer quelque chose, c'est déjà détruit. J'ai trouvé la solution la plus simple pour être juste un simple de vérifier au début de la promesse.
Edit: sinon, vous pouvez utiliser De braise.trySet.
J'ai eu un problème similaire dans un test d'intégration. Pour résoudre, dans le test d'intégration, j'ai attendu avant d'effectuer l'action suivante.
Le problème est lié à une promesse de ne pas complètement résoudre et un autre test se faire immédiatement après.
Vous devriez donner Braise De La Simultanéité un essai.
importer { tâche, délai d'attente } de "braise-simultanéité';