with sitepoint rails ruby-on-rails ruby-on-rails-3 rspec elasticsearch tire

ruby on rails - sitepoint - ElasticSearch+Tire: buena estrategia para burlarse de ES



elasticsearch rails sitepoint (1)

Probablemente usaría FakeWeb para habilitar y deshabilitar selectivamente las llamadas HTTP en vivo.

Para simular llamadas a ES:

FakeWeb.allow_net_connect = false FakeWeb.register_uri(:any, %r|/Ahttp://localhost:9200|, :body => "{}")

Para permitir llamadas a ES:

FakeWeb.clean_registry FakeWeb.allow_net_connect = true

Permitir y no permitir conexiones de red no es estrictamente necesario aquí, ya que los simulacros de FakeWeb tienen prioridad sobre las llamadas reales, pero me parece que ayuda lanzar una excepción en tus pruebas cuando algo hace una llamada HTTP no bloqueada.

Probablemente pueda ampliar esto para usar los metadatos de prueba para habilitar o deshabilitar los simulacros según sea necesario.

Uso ElasticSearch en la página de inicio de mi sitio. En mis pruebas de aceptación, cuando un usuario inicia sesión, se le redirige a la página de inicio.

Pero el uso de ES en una prueba es costoso (es necesario crear y eliminar el índice), por lo que no quiero tener que hacer eso cada vez que un usuario visita la página de inicio.

Me gustaría hacer la búsqueda de ES real solo cuando la prueba tiene algunos metadatos:

config.before(:each) do if example.metadata[:elastic] Model.create_elasticsearch_index end end scenario "Results should be ordered by distance", :elastic do # tests... end

Entonces necesitaría "burlarme" de la búsqueda y no usar ES cuando la prueba no tenga los metadatos elásticos.

¿Cuál sería una buena manera de lograr eso?