Estoy empezando a implementar pruebas para un paquete R, y he estado usando el paquete testthat
. Tenga en cuenta que soy nuevo en las pruebas, por lo que tal vez mi enfoque sea inactivo.¿Cómo comprobar que no se produce un error?
Tengo una función que actualmente falla la décimo sexta vez que se ejecuta, y antes de arreglar esto, quiero escribir una prueba de regresión que la atrape si vuelve a aparecer.
por ejemplo, la siguiente siempre lanza el mismo mensaje de error:
for i in (1:17) myfun()
myfun
no devuelve nada, que sólo tiene un efecto secundario de la apertura de una conexión de base de datos. Es claro para mí que puedo escribir una prueba que espera un error y pasa si se devuelve:
expect_error(for (i in 1:17) myfun())
Pero no acabo de conseguir la forma de escribir una prueba para asegurarse de que no se produce el error. Como no es obvio, tal vez mi enfoque es incorrecto. Puedo averiguar cómo escribir pruebas más específicas, pero me gustaría comenzar con esta.
¿Qué tipo de prueba escribiría para asegurarme de que dicho error no aparezca?
gracias, pero no estoy familiarizado con el uso de las llaves y punto y coma dentro de la expectativa (por ejemplo, 'expect_true ({...; ...})') podría por favor, ¿explicar? –
Puedes poner cualquier expresión allí. Y el '{...; ...; ...} 'es solo una expresión. Entonces, en su caso, debe escribirse como 'expect_true ({for (i en 1:17) {myfun()}; TRUE})'. – kohske
Esto básicamente trata de detectar un error, ya que un error evitaría que se evalúe la segunda parte de la expresión (en este caso, 'TRUE'). –