Le Javascript.confirm() et Angularjs Karma e2e test
J'ai un Angularjs application qui utilise javascript simple confirmation avant l'exécution de certaines actions.
Contrôleur:
function TokenController($scope) {
$scope.token = 'sampleToken';
$scope.newToken = function() {
if (confirm("Are you sure you want to change the token?") == true) {
$scope.token = 'modifiedToken';
}
};
}
Vue:
<div id="tokenDiv">
Token:{{token}} <button ng-click="newToken()">New Token</button>
</div>
Maintenant, je veux avoir une fin pour fin de test pour vérifier le jeton est remplacée correctement dans la vue. Comment intercepter les javascript.confirm()
appel afin de ne pas arrêter l'exécution du test?
Test:
it('should be able to generate new token', function () {
var oldValues = element('#tokenDiv').text();
element('button[ng-click="newToken()"]').click(); //Here the javascript confirm box pops up.
expect(element('#tokenDiv').text()).not.toBe(oldValues);
});
Jusqu'à présent, j'ai essayé de redéfinir le window.confirm
fonction, mais ensuite, l'appel se plaint qu'il n'est pas défini.
J'ai aussi voulu mettre en place un Jasmin espionner window.confirm
mais dans la syntaxe suivante spyOn(window, 'confirm');
il me donne un message d'erreur indiquant que vous ne pouvez pas espionner null
.
Comment puis-je faire un tel test?
OriginalL'auteur mrt | 2013-05-07
Vous devez vous connecter pour publier un commentaire.
E2E Tests
Veuillez consulter à ce projet:
https://github.com/katranci/Angular-E2E-Window-Dialog-Commands
Tests Unitaires
Si vous créez un service pour les boîtes de dialogue vous pouvez ensuite se moquent de ce service dans votre unité de test afin de rendre votre code testable:
Contrôleur
modalDialog service.
modalDialogMock
Test
OriginalL'auteur katranci
Une autre option serait de créer directement un espion et reviennent automatiquement
true
:window.confirm
appels.OriginalL'auteur Andrei V
Dans les tests unitaires, vous pouvez simuler le $objet de la fenêtre comme ceci:
Votre test:
De votre contrôleur:
OriginalL'auteur Eyal Rosen