2010-05-26 20 views
7

Sto sviluppando un'applicazione Rails, e stavo solo parlando con il mio collega che abbiamo un mix di fixture e mock nei nostri test, che stiamo facendo usando cetriolo e Rspec. La domanda sarebbe: quando dovrebbero essere usati ciascuno?Rails Fixtures vs. Mazzi

+1

tipo di argomento off, ma una valida alternativa ai dispositivi è factory_girl (può essere utilizzata anche con gli apparecchi) http://github.com/thoughtbot/factory_girl#readme ed ecco un railscast su utilizzo http://railscasts.com/episodes/158-factories-not-fixtures – house9

risposta

14

Vorrei utilizzare un oggetto fittizio quando si utilizza l'oggetto reale non è possibile/non è necessario. Diciamo per esempio che è necessario chiamare alcune API remote come un finder dell'indirizzo via codice postale. Probabilmente vorresti prendere in giro l'oggetto in modo che le chiamate su di esso non vengano effettivamente eseguite ogni volta che esegui i test. Ci sono anche altre ragioni come migliorare la velocità, chiedere dati che cambiano dove hai bisogno di una risposta esatta o forse non esiste ancora. Ti permette di testare le cose in modo isolato, dato che puoi determinare che quando chiami questi metodi su questo oggetto mock lo recupererai e non hai effettivamente bisogno di eseguire il codice poiché questo test non è importante.

Se si utilizzano dispositivi di illuminazione, si otterrà un oggetto reale e verranno richiamati i metodi ecc. E il loro codice verrà eseguito, a meno che, ovviamente, non si stoppino i metodi, che è qualcosa per un'altra domanda.

La speranza aiuta un po '. C'è un buon peepcode (http://peepcode.com/products/rspec-mocks-and-models) su derisione e stub, magari verificarlo.

+0

grazie. l'hai spiegato molto chiaramente. – Anand