es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo usar “–dart-define=” en las pruebas de Flutter.

Estoy utilizando flutter test con la opción –dart-define de la siguiente manera:

<h1>Código para ejecutar la prueba</h1>

flutter test --machine --start-paused --plain-name "" --dart-define=SOMEENVVAR=123 test/rovaf_client_test.dart

Pero el problema es que no puedo usar esta variable de entorno de la siguiente manera:

print(String.fromEnvironment("SOMEENVVAR"));

Esto simplemente no imprime nada.

¿Existe alguna forma de utilizar variables de entorno o pasar parámetros para el comando flutter run test? ¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de utilizar variables de entorno mientras se ejecutan pruebas con flutter test. Al utilizar la opción --dart-define, el valor se pasa como una constante de tiempo de compilación en lugar de una variable de entorno en tiempo de ejecución. Por lo tanto, para utilizar el valor, necesitas acceder a él como una constante en lugar de una variable de entorno.

    Para hacer esto, agrega la siguiente línea al principio de tu archivo de pruebas:

    const SOMEENVVAR = String.fromEnvironment('SOMEENVVAR');
    

    Luego, puedes utilizar SOMEENVVAR como una constante en tu código de prueba, de la siguiente manera:

    print(SOMEENVVAR); // imprime "123"
    

    Ten en cuenta que si no se pasa la opción --dart-define durante la ejecución de la prueba, la constante SOMEENVVAR no estará definida y puede causar errores en tu código de prueba. Por lo tanto, es posible que desees proporcionar un valor predeterminado para la constante, de la siguiente manera:

    const SOMEENVVAR = String.fromEnvironment('SOMEENVVAR', defaultValue: 'valor predeterminado');
    

    De esta manera, si no se utiliza la opción --dart-define, SOMEENVVAR se establecerá en 'valor predeterminado' en lugar de generar un error.

Comments are closed.