Saltar al contenido principal

Restablecimiento del estado de TestTextInput

El estado de TestTextInput ahora se restablece entre pruebas.

Resumen

#

El estado de una instancia de TestTextInput, un simulador (stub) para el teclado en pantalla del sistema, ahora se restablece entre pruebas.

Contexto

#

El framework de pruebas de Flutter utiliza una clase llamada TestTextInput para rastrear y manipular el estado de edición en una prueba de widgets. Las pruebas individuales pueden realizar llamadas que modifiquen el estado interno de este objeto, a veces de forma indirecta (como al establecer sus propios manejadores en SystemChannels.textInput). Las pruebas posteriores podrían entonces comprobar el estado de WidgetTester.testTextInput y obtener valores inesperados.

Descripción del cambio

#

El estado de WidgetTester.testTextInput ahora se restablece antes de ejecutar una prueba de testWidgets.

Guía de migración

#

Las pruebas que dependían del estado sucio (dirty state) de una prueba ejecutada previamente deben actualizarse. Por ejemplo, la siguiente prueba, de packages/flutter/test/material/text_field_test.dart en la prueba 'Controller can update server', anteriormente pasaba debido a una combinación de estado sucio de pruebas anteriores y a un fallo al establecer realmente el estado en casos en los que debería haberse establecido.

Código antes de la migración:

En una widgetsTest, antes de cambiar realmente el texto en un widget de edición de texto, esta llamada podría haber tenido éxito:

dart
    expect(tester.testTextInput.editingState['text'], isEmpty);

Código después de la migración:

Elimina la llamada por completo o considera usar lo siguiente para asegurar (assert) que el estado no se ha modificado aún:

dart
    expect(tester.testTextInput.editingState, isNull);

Timeline

#

Lanzado en la versión: 1.16.3
En versión estable: 1.17

Referencias

#

Documentación de la API:

Problema relevante:

PR relevante: