Pruebas en el track de Ruby

Aprende a probar tus ejercicios de Ruby en Exercism


Ejecutar los tests

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 logres que pase cada test.

Entender los skips

El método skip le indica al conjunto de tests que no ejecute un test. Se usa comúnmente para evitar ejecutar tests de funcionalidad que aún no está implementada, y así puedas concentrarte en la parte en la que estás trabajando en este momento.

El resumen de la ejecución de tests mostrará la cantidad de tests omitidos. Deberías desactivar todos los skips antes de completar un ejercicio.

Personalizar el reporte de tests

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 usando coincidencia por expresiones regulares.

$ ruby hamming_tests.rb -n /empty/

También puedes combinar las opciones.

Desactivar todos los skips

Con tu recién descubierto poder de seleccionar los tests individuales o los grupos de tests que quieres ejecutar, quizás te convenga desactivar todos los skips.

La forma rápida y sucia

Aprovechando que en Ruby los métodos se pueden sobrescribir, si agregaras esta línea de código:

def skip ; end

así, en el archivo de tests 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.

La igual de rápida pero más limpia

Claro, editar todos los archivos con el tiempo puede resultar molesto, así que podrías hacer lo mismo que hicimos nosotros al desarrollar los ejercicios: crear un archivo que contenga la definición de skip y requerirlo como librería cuando lo necesitemos.

Creamos una carpeta lib para guardar nuestras cosas «auxiliares», y se ve así:

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 del archivo, y el listado del archivo está en su estado completo.