Saltar al contenido

Cómo cargar y probar el rspec del IRB

Comencemos cargando el núcleo y las expectativas de RSPEC.

12require'rspec/core'# esto es lo que realmente ejecuta sus pruebasrequire'rspec/expectativas'# sintaxis legible para comprobar las propiedades de su código</pre
ruby

Cómo cargar y probar el rspec del IRB
Cómo cargar y probar el rspec del IRB

Luego incluimos los módulos de los fósforos.

rspec no incluirá automáticamente esto para usted si está usando irb</pre
rubí

Con esto podemos ahora probar nuestras expectativas:

12>> expect(1).to eq(1)=>true</pre
rubí

Whooohoo! Estás listo para ir… En realidad no, prueba esto.

123452.3.0 :003 > array_hashes = [{lol: nil}] => [{:lol=>nil}]2.3. 0 :005 > include RSpec::Matchers => Object2.3.0 :006 > expect(array_hashes).to include(have_key(:lol))</pre&gt.;

Encontrará un error como el que se muestra a continuación:

1234TypeError: tipo de argumento equivocado RSpec::Matchers::BuiltIn::Has (módulo esperado) de (irb):6:en `include' de (irb):6 de /usr/local/rvm/rubies/ruby-2.3.0/bin/irb:11:en `<main>'</pre>

Si lees atentamente el error espera un Módulo como argumento, esto es porque al usar irb estamos corriendo en el objeto principal de rubí. Este objeto tiene otro método llamado include que tiene presidencia sobre el método include de rspec's

Para trabajar alrededor de esto, podemos preparar las cerillas para la clase de solteros de Main&apos:

irbirb(main):001:0> require 'rspec/expectativas'=> trueirb(main):002:0> singleton_class. Prepárese RSpec::Matchers=> #<Class:#<Object:0x007ff08a8d6620>>irb(main):003: 0> array_hashes = [{lol: nil}]=> [{:lol=>nil}]irb(main):004:0> expect(array_hashes). para incluir(have_key(:lol))=> true</pre&gt.;

Nos encontramos con este problema durante una sesión de la mafia en AgileVentures y planteamos el tema en la página de rspec expectations github donde conseguimos este hack.