tutorial locators example español javascript angularjs protractor

javascript - locators - Cómo esperar un conteo dinámico de elementos en las pruebas e2e utilizando Protractor



protractor tutorial español (2)

Mientras se usa chai para afirmaciones, hay chai-as-promised que permite hacer frente a las promesas de una manera más legible. Para que funcione debes primero declarar:

var chai = require(''chai''); var chaiAsPromised = require(''chai-as-promised''); chai.use(chaiAsPromised);

y luego en el código:

// here is modified remaind of the code from the original question: it(''should display a new item in list'', function() { addItemButton.click(); expect(items.count()).should.eventually.equal(startCount+1); });

Actualmente estoy escribiendo algunas pruebas e2e para mi humilde aplicación angular con Protractor.

Mi aplicación funciona bien, las pruebas unitarias pasan todo, e2e también se usa ... hasta este:

appE2ESpec.js

describe(''adding an item'', function() { var items, addItemButton, startCount; beforeEach(function() { items = element.all(by.css(''li.item'')); addItemButton = element(by.id(''addItemButton'')); startCount = items.count(); }); it(''should display a new item in list'', function() { addItemButton.click(); expect(items.count()).toEqual(startCount+1); }); });

Así es como habría escrito mi prueba pero,

El problema es: que items.count () devuelve una promesa, lo sé , pero no puedo lograr que el Transportador lo resuelva. Así que entiendo esto:

Failures: 1) myApp adding an item should display a new item in list Message: Expected 6 to equal ''[object Object]1''.

Lo que he intentado:

items.count().then(function(count) { startCount = count; //console.log(startCount) --> "6" Perfect! });

Pero obtuve el mismo resultado al final ... No puedo poner la expect en el then , también pensé en eso.

  • Busqué en el repositorio de Protractor GitHub, StackOverflow y el grupo Google AngularJs.

Apéndice:

console.log(startCount) produce esto:

{ then: [Function: then], cancel: [Function: cancel], isPending: [Function: isPending] }

Podría haber escrito .toEqual(6) pero no quiero volver a escribir mi prueba cada vez que necesito cambiar el estado de inicio de mi aplicación.

¿Alguna idea? ¡¡Gracias por adelantado!!


Necesitas resolver la promesa y luego hacer la afirmación.

El transportador resolverá la promesa que pasa a expect (), pero no puede agregar un número a la promesa. Primero debe resolver el valor de la promesa:

beforeEach(function() { ... items.count().then(function(originalCount) { startCount = originalCount; }); }); it(''should display a new item in list'', function() { ... expect(items.count()).toEqual(startCount+1); });