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