Aprende a probar tus ejercicios de Ruby en Exercism
Ejecuta los tests con:
$ ruby hamming_test.rb
Solo se ejecutará el primer test; todos los demás se han dejado pendientes con el método skip. Elimina o comenta el siguiente skip a medida que vayas consiguiendo que pase cada test.
El método skip indica al conjunto de tests que no ejecute un test. Se usa habitualmente para evitar ejecutar tests de funcionalidades sin implementar, de modo que puedas centrarte en la parte en la que estás trabajando ahora mismo.
El resumen de la ejecución de los tests mostrará el número de tests omitidos. Deberías desactivar todos los skips antes de completar un ejercicio.
Si quieres color, ejecuta los tests con:
$ ruby hamming_test.rb -p
Si quieres ver los nombres de los tests, ejecuta los tests con:
$ ruby hamming_tests.rb -v
Si quieres ejecutar solo un test, puedes especificar uno o un grupo con una coincidencia al estilo de las expresiones regulares.
$ ruby hamming_tests.rb -n /empty/
También puedes combinar las opciones.
Ahora que tienes el nuevo poder de poder seleccionar los tests individuales o los grupos de tests que quieres ejecutar, puede que te apetezca desactivar todos los skips.
Aprovechando que en Ruby los métodos se pueden sobrescribir, si añadieras esta línea de código:
def skip ; end
tal que así en el fichero de test de Hamming
class HammingTest < Minitest::Test
def skip ; end
def test_identical_strands
entonces todos los skips se seguirán evaluando, pero dejarán que tus tests se ejecuten.
Claro que editar todos los ficheros cada vez puede resultar molesto, así que puedes hacer lo mismo que hicimos nosotros al desarrollar los ejercicios: crear un fichero que contenga la definición de skip y requerirlo como librería cuando lo necesitemos.
Creamos una carpeta lib para guardar nuestras cosas «helper», y tiene este aspecto:
require 'minitest/autorun'
# You can use this to disable all skips in the current exercise by issuing the
# following command:
# ruby -I../lib -rdisable_skip <filename_test.rb>
module Minitest
class Test
def skip(_msg='', _bt=caller)
end
end
end
La descripción de cómo usarlo está comentada en ese listado de fichero, y el listado del fichero está en su estado completo.