Diciamo che ho classi Auto e Meccanico. L'auto ha un metodo "run". Il meccanico richiede l'auto per qualche ragione. Quindi scrivo le specifiche RSpec. In meccanico mi definisco un falso clas come questo:Best practice o soluzione alternativa per le specifiche RSpec che simulano le costanti di classe
class Car; end
e poi stub il metodo che utilizza meccanico su di esso. Tutto funziona bene se eseguo i test separatamente. Ma quando eseguo entrambi i test insieme (rspec spec/directory /) le mie specifiche Mechanic usano la vera classe Car.
Così. Credo che questo sia dovuto al fatto che le classi ruby sono "aperte" e ho già caricato la classe una volta per le specifiche Car. Ma c'è un modo migliore per farlo? Quali sono le migliori pratiche per questo tipo di situazioni? Questo significa che il mio codice ha bisogno di alcuni miglioramenti perché probabilmente è strettamente accoppiato?
ho fatto un demo veloce in github: https://github.com/depy/RspecTest
Ma a volte quando ho bisogno di una classe, quella classe include qualcos'altro. Devo fingere che "altro" prima di richiedere. Che ne pensi? –
Questo è il comportamento che ti ho detto di fare nel blocco precedente. Come tu puoi avere 2 lascia, 1 per ciascuna delle tue classi, e sul blocco precedente, puoi fare uno stub per restituire l'altro oggetto basato su una chiamata sul primo. –