- Pourquoi mes tests échouent-ils lorsque des extras d'UI-Router-extras (non normal UI-routeur) sont installés? strong> P> si vous souhaitez installer Cela utilise rapidement Yeoman + Angular-Fullstack-Generator + Bower Install UI-Router-Extras em> p> J'ai trouvé un problème similaire avec UI-routeur normal . P> p> si je désinstallez ui-router.extras Ce test passe juste bien:
p> voici mon ui-routeur-extras code> et toujours mes tests? strong> p>
karma.conf code> p>
4 Réponses :
1) Votre test est en échec car 2) En fait, il y a beaucoup de suggestions dans la question que vous avez liée à. Je suppose que l'appel supplémentaire est effectué pour charger le modèle de route par défaut, c'est-à-dire. ui-routeur-extras code> fait une demande d'obtention http inattendue à
app / principal / main.html code> est donc le test échoue.
sinon code>. Donc, le remplacement peut résoudre le problème: p>
Ouais j'ai essayé ceci ... je vais mettre à jour ma réponse avec mes modifications mais que vous obtenez toujours la même erreur.
Peut-être que vous pourriez en prendre un autre coup d'oeil et voir si c'est une erreur factice
Cela pourrait être le résultat d'un composant ayant une dépendance à l'état Pour contourner cela, remplacer $ code> auquel cas
$ State code> sera instancié et une route par défaut sera exécutée. C'est pourquoi un modèle d'un de vos contrôleurs
main.html code> est récupéré.
Go () code> et
transitionTo () code> de
$ State code> Méthodes avec les mannequins: P>
beforeEach( inject( function ( _$state_ ) {
state = _$state_;
spyOn( state, 'go' );
spyOn( state, 'transitionTo' );
} ) );
Amey c'est correct. Comment dans le monde êtes-vous venu le savoir? Travaillé avec angulaire pendant environ 8 mois maintenant et je suis totalement nouveau à tester. Plus je vais, plus je découvre que je ne sais rien. Avez-vous des recommandations pour vous rendre à votre niveau? En particulier pour les tests E2E et des unités?
@Amery est correct, UI-Router-Extras initialise le service $ State CODE> qui provoque la chargement de votre route par défaut et demande le modèle par URL. Voir ci-dessous pour une réponse alternative à l'aide de
$ URLROUTERProvider.deferterInterC () code>.
$ URLROUTERPROVIDER.DEFERTINITINITINITING () CODE> est utilisé pour empêcher de demander l'état configuré "sinon" et ne résout pas le problème de l'OP.
Voici une solution alternative qui ne peut pas Nuke UI-Router's Premièrement, le scénario d'échec peut être reproduit en suivant ces étapes: P> TransitionTo Fonction CODE>.
beforeEach(module('uiRouterExtrasKarmaBugApp'));
// Add the following line
beforeEach(module(function($urlRouterProvider) { $urlRouterProvider.deferIntercept(); }));
Il y a deux solutions réellement ... juste après la déclaration du module. P>
Vous pouvez ajouter: p>
ou vous pouvez manuellement, différer l'interception: p>
avant précédent (module ('stateMock')); code> p> li>
avant (MODULE (fonction ($ ($ urlrouterprovider) {$ urlrouterprovider.deferterinting ();})); code> p> l> l>
ol>
Je trouve qu'il est plus facile de tester les contrôleurs, les services, les directives, etc. S'ils sont dans des modules avec aussi peu de dépendances que possible. S'il est possible, créez un module racine que vous apportez votre uirouter et votre uirouterextras. Vous pouvez ensuite supprimer la dépendance du module contenant le contrôleur que vous essayez de tester.