Creo que realmente te estás perdiendo el punto aquí. Usted SIEMPRE necesita un When
. ¡Eso es lo que deberías probar! Lo que puede omitir es Givens
Lo que debería decir es;
When I visit the homepage
Then I should see "Welcome To The Site"
Given When Then
es realmente una manera más agradable de lo que representa una máquina de estados.
Given some initial state (in your case, non)
When I perform some action (in your case, visiting the homepage)
Then I have some final state (in your case, text displayed to a user)
Lo que me gusta hacer es pensar en todas las cosas que deben estar presentes para permitir que el When
suceda. En su caso, no parece haber ningún estado inicial. Pero considere si tenía alguna aplicación web. Debería tener un estado inicial antes de visitar la página de inicio (deberá asegurarse de que el usuario haya iniciado sesión);
Given a user (user must be stored in the database)
And the user is logged in (a logged in user must be in the session)
When the user visits their homepage
Then the user should see "Welcome To Your Homepage"
Un escenario alternativo sería;
Given no logged in user (some people would leave this Given out, but I add it for completness)
When a user visits their homepage
Then the user should be redirect to the login page
Como alguien señaló correctamente, la mayoría de las herramientas de TDC en realidad no diferenciar entre Given When Then
pero se debe! La naturaleza detallada de 'Given When Then' se ha elegido porque es más fácil para nosotros los humanos entender y ayudar a nuestros procesos de pensamiento. A una máquina no le importa lo que usted llama los pasos. En este caso, debe hacer todo lo posible para utilizar las palabras clave correctamente en todo momento.
En realidad, parece que Specflow ni siquiera se preocupa de nombrar un paso Dado, Cuando o Siempre, siempre que se vincule con el atributo Dado/cuando/entonces correcto. La elección de la palabra es sabor, y parece ejecutar los pasos en orden. – perfectionist
Es como dice el perfeccionista; specflow simplemente ejecuta los pasos en el orden indicado en el archivo de características. No podría importarle menos qué atributo usa. –
Doh - ¡No hay saltos en los comentarios! Yo recomendaría usar When-steps para marcar claramente la acción que está probando. Como en Arrange Act Assert. –