Ho appena visto uno Railscast per Minitest.Minitest e Rspec
Quali sono i pro e i contro per l'utilizzo di RSpec vs Minitest per testare un'app per rails? Quali funzionalità perderò la conversione da RSpec a Minitest?
Ho appena visto uno Railscast per Minitest.Minitest e Rspec
Quali sono i pro e i contro per l'utilizzo di RSpec vs Minitest per testare un'app per rails? Quali funzionalità perderò la conversione da RSpec a Minitest?
Sono uno degli sviluppatori di RSpec e non ho mai usato il minitest, quindi prendi in considerazione i miei pregiudizi leggendo questa risposta.
In linea di massima, il potere di RSpec deriva dal fatto che esso reifica tanti concetti di test in oggetti di prima classe. Dove Test :: Unit e Minitest usano metodi semplici per fare asserzioni, RSpec usa oggetti matcher di prima classe che supportano negazione, auto-descrizione e altro. Gli esempi di RSpec sono oggetti di prima classe che supportano ricchi metadati; minitest/spec compila it
blocca in metodi semplici, che non supportano lo stesso tipo di metadati ricchi. RSpec supporta la specifica dei comportamenti condivisi usando un costrutto di prima classe (gruppi di esempio condivisi) che accetta argomenti; w/minitest puoi usare inheritance or a mixin to re-use tests, ma non ha lo stesso tipo di supporto di prima classe. RSpec ha una API di formattazione esplicita (e ci sono molti programmi di formattazione di terze parti che la usano); Non sono a conoscenza del fatto che Minitest abbia lo stesso tipo di API di formattazione di prima classe.
Come qualcuno che esegue costantemente test e pratica TDD tutto il giorno, trovo che la potenza RSpec mi dà molto utile. Molte persone lo trovano comunque eccessivo e c'è un costo cognitivo aggiunto alle astrazioni extra.
Qui sono alcune caratteristiche specifiche RSpec ha che credo Minitest manca:
before(:all)
ganci (notare questa è una caratteristica power user di RSpec che deve essere utilizzato raramente; ho usato solo su pochi occasioni in molti anni di utilizzo RSpec)around(:each)
gancivantaggi dell'utilizzo di Minitest:
def test_blah
o it 'blah'
.Nel complesso, è un po 'come Sinatra vs Rails, e penso che Minitest e RSpec siano entrambe scelte ottimali a seconda delle esigenze.
Un'ultima cosa: se ci sono aspetti specifici di Minitest che ti piacciono di più, ma altre cose che ti piacciono di più su RSpec, possono essere facilmente mixate e abbinate. I wrote a blog post about this, se sei interessato.
Grazie per la spiegazione sorprendente. –
Ricorda a Boris che se desideri integrare MiniTest con Spork, Guard, Capybara e qualsiasi tipo di driver Javascript, puoi pianificare di trascorrere un'intera settimana cercando di capirlo e renderlo stabile. MiniTest non è pronto per l'uso in primetime quando si tratta di avere uno stack di test completo per tutto tranne che per le applicazioni Rails più rudimentali. Ho dato a me il vecchio college per provare me stesso, ma è appena finito per la frustrazione. – AKWF
Mi sono convertito in stile minit dallo stile Test/Unit
con shoulda
e vale la pena. Elimina il boilerplate e dicono che migliora anche la velocità. Non ho mai veramente usato RSpec. Invece, ho scritto il mio primitivo test e la struttura di derisione (solo allo scopo di comprendere il beffardo, l'ho abbandonato al passaggio a Minitest). Penso che lo stub/mocking in RSpec potrebbe essere più avanzato, quindi se lo hai già imparato, continua a usarlo. Altrimenti, segui Minitest, che ti consentirà di collaborare con persone ignoranti di RSpec, come me.
Vedere ad es. http://stackoverflow.com/questions/8423227/migrating-from-rspec-to-minitestspec – matt
Forse queste due domande dovrebbero essere unite, esiste un modo per unire le domande? –
Chiuso con +12 voti !!! votando per aprire. –