¿Cómo validar cuando se marca una casilla de verificación en las pruebas de AngularJS e2e?
ng-href angular 5 (3)
Actualicé esta pregunta ya que tenía el mismo problema. Utilicé la siguiente solución en mi prueba, pero espero ver la mejor manera.
expect( element(''input[ng-model="value1"]'').attr(''checked'') ).toBeTruthy();
He estado probando las pruebas de AngularJS e2e y me estoy atascando para determinar si una casilla de verificación está marcada o no.
Utilicé la prueba de extremo a extremo para la entrada de la casilla de verificación como muestra (consulte la pestaña Prueba de extremo a extremo en el Ejemplo ).
Fragmento de HTML:
Value1: <input type="checkbox" ng-model="value1"> <br/>
Fragmento de controlador:
function Ctrl($scope) {
$scope.value1 = true;
}
Esto es lo que intenté:
1) expect(binding(''value1'')).toEqual(''true'');
Esto funciona en la prueba de extremo a extremo de muestra siempre que se muestre value1
en la pantalla con {{value1}}
. Si prueba esto localmente y elimina `{{value1}}, la prueba de enlace falla. En la mayoría de mis ejemplos del mundo real, no estoy mostrando el valor de la casilla de verificación en la pantalla en ningún lugar.
2) expect(input(''value1'').val()).toEqual(''true'');
El valor siempre estará predeterminado y no está relacionado con si la casilla de verificación está o no en un estado marcado (tomado de esta publicación ).
Nota: Parece que las pruebas de Angular E2E se reemplazarán con el Protractor en el futuro (consulte la documentación )
Espero que haya una mejor manera, pero resolví esto validando el recuento de los elementos de entrada marcados que coinciden con el enlace del modelo:
expect(element(''input[ng-model="value1"]:checked'').count()).toBe(1);
Al menos una desventaja de esto cuando se comprueba si algo no está marcado es si el elemento no existe o si hubo un error tipográfico, el valor aún sería 0 como en este ejemplo:
expect(element(''input[ng-model="valueDoesNotExist"]:checked'').count()).toBe(0);
Para cualquiera que use Protractor , hay un isSelected() web isSelected() para exactamente esto.
En lugar de pedir atributo checked
puedes hacer:
expect(element(by.model(''value1'')).isSelected()).toBeTruthy();