Acceso a la Prueba Angular del Transportador interior


¿Es posible acceder a angular dentro de sus pruebas de transportador como lo hace en las pruebas unitarias?

El caso de uso es que tengo un servicio que transforma texto y quiero acceder a ese servicio para transformar algunos datos dentro del script de prueba real. Sé que existe el método addMockModule en protractor, pero no puedo averiguar cómo usarlo para este propósito.

Agradecería cualquier ayuda!

Author: wlingke, 2013-12-16

1 answers

Hay una función llamada evaluate(). Busque un elemento en el dom y luego ejecute la expresión.

Por ejemplo. Si desea contar el número de todos en el http://angularjs.org / sitio web (bajo Agregar un poco de control), haga esto:

Abra el explorador de elementos en protractor

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

Debería darte un 2

También puede usar 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);
});

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

 37
Author: Andres D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-17 03:05:43