2011-12-07 29 views
6

¿Existe alguna estrategia o conjunto de pasos a seguir para migrar de RSpec 2 a MiniTest::Spec? Me gustaría echar un vistazo a hacer esto para un gran proyecto, pero no estoy seguro de dónde comenzar.Migrando de RSpec a Minitest :: Spec?

+0

No me impresionó demasiado con MiniTest cuando lo miré recientemente; Decidí seguir con RSpec por el momento. Dicho esto, si MiniTest mejora para ser competitivo con RSpec, esto podría convertirse en una buena idea. –

+2

Desde el momento en que se escribió el comentario anterior, Minitest ha madurado mucho, y ahora es el que utilizan Rails, Nokogiri y muchos otros. –

Respuesta

8

No he utilizado Minitest :: Spec durante tanto tiempo, estoy trabajando en portar algunas de nuestras pruebas a mí mismo, pero aquí están las pocas cosas que he notado que vienen de RSpec:

  • Los compensadores son por supuesto diferentes - es must/wont en lugar de should/should_not, y los emparejamientos de predicados se han ido, por lo que no se puede decir must_be_true/must_be_false o similares.
  • Dicho esto, si ha escrito adaptadores de RSpec personalizados, o está utilizando adaptadores de hándicap o similares, debería poder utilizarlos con MiniTest gracias a la gema minitest-matchers. Pero YMMV.
  • MiniTest :: Spec no proporciona context, por lo que tendrá que cambiar esto a describe o alias.
  • MiniTest :: Spec tampoco proporciona described_class.
  • Usted tampoco tiene before :all.
  • subject debe configurarse manualmente (creo que alguien me corrige si me equivoco).

Para responder a su pregunta, en términos de portabilidad de un conjunto existente de pruebas, me temo que no puede hacer un simple hallazgo y reemplazo, tendrá que portar sobre cada archivo de prueba uno al un momento. Obviamente, esto significa que debes determinar si el esfuerzo vale la pena.

+0

Minitest admite 'subject {}' (creo que probablemente tiene que ser manual, pero luego, siempre lo configuro explícitamente en RSpec de todos modos), aunque no parece funcionar con la sintaxis 'it {}'. Y tiene su propio tipo de emparejamiento de predicados: solo tienes que hacer 'must_be: valid?' En lugar de 'should is_valid' de RSpec. –