ruby-on-rails cucumber

ruby on rails - Datos de semilla en pruebas de pepino.



ruby-on-rails cucumber (3)

Geoff Lanotte tiene la respuesta. Simplemente pensé que agregaría un enlace a la página de Cucumber wiki que contiene estos y otros ejemplos.

Estoy escribiendo una aplicación web que se utiliza un SaS. Cada cliente tiene su propio directorio de aplicaciones y bases de datos, así que tengo una tarea de rake que crea todos los datos mínimos necesarios (datos de inicio) para ejecutar su sitio web: derechos y roles predeterminados, un usuario de superadmin, una tabla "us_states" ya poblada, algunos depósitos locales y terminales (es una aplicación logística).

No tengo ningún escenario de pepino y comencé a construir algunos. Soy un principiante con pepino.

La primera vez que puse esa tarea de datos semilla en una línea dada, pero eso es prácticamente un hecho para todos los escenarios, y no tiene mucho sentido para los no programadores que miran los escenarios (para los humanos, es un hecho que no necesita expresarse conscientemente), así que lo moví a hooks.rb.

Mi primer escenario se ve así:

1 Feature: Place an order 2 In order to keep orders in the database 3 As a admin 4 I want to place orders 5 6 Scenario: Using common legs 7 Given I have 1 customers 8 And I''m on the homepage 9 And I follow "Place an Order" 10 When I select the customer 11 And I select the SSLine 12 And I click "Use Common Legs" 13 Then I should see "PICKUP AT" 14 And I should see "DELIVER TO" or "LOAD AT" 15 And I should see EMPTY RETURN

Mi hooks.rb se ve así:

1 Before do 2 MinimumData.new(''costi'', ''1234'').populate #username and password 3 end

Preguntas:

  1. No quiero ejecutar esta tarea MinimumData.populate antes de cada escenario porque toma 8 segundos. ¿Debo hacer que funcione solo una vez, globalmente? ¿Cómo?
  2. ¿Tengo que limpiar la base de datos con un After.do? Realmente no quiero hacer eso, porque duplicaré la lógica en After.do, solo con las sentencias Model.delete_all. Noté que después de mi primera ejecución, la base de datos de prueba aún tiene todos esos datos. Puedo purgarla con rake db: prueba: purgar y reinicializarla. ¿Es una buena práctica?

No sé de un equivalente before(:all) en pepino. Lo que podría hacer es agregar su semilla a un archivo, digamos features/support/seeds.rb y luego en la parte superior de sus features/support/env.rb y debajo de la línea que requiere su environment.rb ponga la línea:

require File.dirname(__FILE__) + ''/seeds''

o alternativamente

#just write the code you want to execute directly into the env.rb file

Estos son tus bloques disponibles para agregar en el env.rb

Before do #this code is run before each scenario end after do #this code is run after each scenario end at_exit do #this code is run at the end end


Una corrección a la respuesta de Geoff Lanotte. Debería ser

Before do # this code is run before each scenario end

con una mayúscula B.

Sin embargo, en lugar de poner este tipo de código en su archivo env.rb, puede querer ponerlo en un nuevo archivo en su directorio de características / soporte, por ejemplo, un archivo "hooks.rb". Esto se debe a que el archivo env.rb se regenera automáticamente si actualiza cucumber-rails.

Más información aquí: https://github.com/cucumber/cucumber/wiki/Hooks