web-dev-qa-db-fra.com

Accès à Angular inside Test Protractor

Est-il possible d'accéder à angular dans vos tests de rapporteur comme vous le faites dans les tests unitaires?

Le cas d'utilisation est que j'ai un service qui transforme le texte et je veux accéder à ce service pour transformer certaines données dans le script de test réel. Je sais qu'il y a la méthode addMockModule dans le rapporteur, mais je ne sais pas comment l'utiliser à cette fin.

J'apprécierais toute aide!

28
wlingke

Il existe une fonction appelée assess (). Recherchez un élément dans le dom, puis exécutez l'expression.

Par exemple. Si vous souhaitez compter le nombre de todos sur le site Web http://angularjs.org/ (sous Ajouter un certain contrôle), procédez comme suit:

Ouvrez l'explorateur d'éléments dans le rapporteur

./node_modules/protractor/bin/elementexplorer.js
browser.get('http://angularjs.org/')
element(by.model('todoText')).evaluate('todos.length').
  then(function(count) {
    console.log(count)
  });

Cela devrait vous donner un 2

Vous pouvez également utiliser executeAsyncScript

browser.executeAsyncScript(function(callback) {
  // Here we use document.body, but your app may live under a different
  // element.
  var service = angular.element(document.body)
      .injector()
      .get('myService');
  service.query({}, function(data) {
    callback(data);
  });
}).then(function (output) {
  console.log(output);
});

Voir un exemple: https://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/api-helper.js

37
Andres D