Rails contiene una cartella chiamata test/mocks
molto speciale. I file al suo interno, suddivisi in una cartella per ogni environment, sono caricati da Rails in automatico dopo i corrispondenti nell’applicazione Rails, in fase di esecuzione di un test. In questo modo è possibile sovrascrivere il comportamento di una determinata libreria.
Ad esempio, ipotizziamo che il controller Shopping esegua una chiamata ad un sistema di carte di credito ogni volta che si esegue un acquisto. In fase di test potremmo non voler lanciare questa chiamata ma modificare il metodo charge_credit_card
in modo da restituire sempre true
senza interrogare la banca.
A questo punto è sufficiente creare un file shopping_controller.rb
e sovrascrivere il metodo incriminato. In questo modo, potremo eseguire quanti test vogliamo senza disturbare la banca ogni volta.
In Ruby esistono soluzioni più evolute per il mocking. Una libreria molto diffusa si chiama mocha.