2012-05-23 22 views
10

Io sono un principiante in Ruby e aveva questa domanda mi fastidioso per molto tempo.Che cosa è esattamente la parola "dovrebbe" in RSpec Rubino

In un file RSpec, se scriviamo Book.should <do something>, qual è la parola chiave should? È un membro dell'oggetto Libro? Come è diventato membro dell'oggetto Libro? O è un qualche costrutto di Ruby? È una funzione? Dove posso trovare la definizione di questo se è una funzione o un membro?

+1

Questa domanda è il duplicato di http://stackoverflow.com/questions/3105755/ruby-metaprogramming-how-does-rspecs-should-work –

+0

Il collegamento non spiega quello che realmente fa. Qual è esattamente la parola chiave "dovrebbe"? – woodstok

+3

+1 per cercare di capire la magia. –

risposta

11

Dopo il caricamento, RSpec include a module nel modulo Kernel che è incluso in tutti gli oggetti conosciuti rubino. Pertanto, può rendere il metodo dovrebbe disponibile per tutti gli oggetti. Come tale, should non è una parola chiave (come if, class o end), ma un metodo ordinario.

Si noti che che mixin è disponibile solo in contesti RSpec come è "patch in" durante il caricamento o RSpec.

+0

Era quello che stavo cercando. Grazie – woodstok

3

Ho risposto a una domanda simile a questo here. In sostanza:

Quello che penso la risposta di Holger potrebbe rendere più esplicito, e ciò che può essere quello che inizialmente confuso, è che should rompe la maggior parte delle usuali convenzioni per metodo di denominazione (niente sul metodo descrive quello che fa, per esempio) per fare in modo che il codice nel suo complesso fosse letto come una sorta di frase.

Quindi, piuttosto che solo la creazione di una serie di test, la biblioteca sta cercando di incoraggiarvi a descrivere la vostra applicazione attraverso test in un modo che assomiglia a una specifica leggibile.

+1

ok. Cosa dovrebbe fare internamente? – woodstok

+2

Crea un'asserzione che una condizione è vera che verrà eseguita come parte del test. Quindi è simile a dire 'assert x == y'. – Russell

Problemi correlati