I test sul percorso Ruby

Scopri come testare i tuoi esercizi Ruby su Exercism


Eseguire i test

Esegui i test con:

$ ruby hamming_test.rb

Verrà eseguito solo il primo test, mentre tutti gli altri sono stati messi in attesa tramite il metodo skip. Elimina o trasforma in commento il prossimo skip man mano che superi ogni test.

Capire gli skip

Il metodo skip dice alla suite di test di non eseguire un test. Di solito si usa per evitare di eseguire i test di funzionalità non ancora implementate, così puoi concentrarti sulla parte a cui stai lavorando in questo momento.

Il riepilogo dell'esecuzione dei test elencherà il numero di test saltati. Prima di completare un esercizio, conviene disattivare tutti gli skip.

Personalizzare il report dei test

Se vuoi i colori, esegui i test con:

$ ruby hamming_test.rb -p

Se vuoi vedere i nomi dei test, esegui i test con:

$ ruby hamming_tests.rb -v

Se vuoi eseguire un solo test, puoi specificarne uno o un gruppo usando una corrispondenza in stile espressione regolare.

$ ruby hamming_tests.rb -n /empty/

Puoi anche combinare le opzioni tra loro.

Disattivare tutti gli skip

Ora che hai il nuovo potere di selezionare i singoli test o i gruppi di test che vuoi eseguire, potresti voler disattivare tutti gli skip.

La soluzione rapida e sporca

Approfittando del fatto che in Ruby i metodi si possono sovrascrivere, se aggiungi questa riga di codice;

def skip ; end

in questo modo nel file di test di Hamming

class HammingTest < Minitest::Test
  def skip ; end
  def test_identical_strands

allora tutti gli skip verranno comunque valutati, ma i test verranno eseguiti lo stesso.

Ancora rapida, ma più pulita

Certo, modificare tutti i file ogni volta può essere fastidioso, quindi potresti fare come abbiamo fatto noi sviluppando gli esercizi: creare un file che contiene la definizione di skip e richiederlo come libreria quando ci serve.

Abbiamo creato una cartella lib per tenere le nostre cose «ausiliarie», e si presenta così:

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 descrizione su come usarlo è commentata in quel listato, e il listato è riportato nella sua versione completa.