En aquest tema, aprendrem com compartir dades entre diferents passos en un escenari de Cucumber. Aquesta habilitat és essencial per mantenir els nostres escenaris nets i evitar la duplicació de codi. A més, ens permet reutilitzar informació entre passos, cosa que és especialment útil quan treballem amb dades que es generen o es modifiquen durant l'execució dels escenaris.
Conceptes clau
- Variables d'instància: Utilitzar variables d'instància dins de les definicions de passos per emmagatzemar dades que es poden compartir entre diferents passos.
- Context compartit: Crear un objecte de context que pugui ser utilitzat per emmagatzemar i recuperar dades entre passos.
- Hooks: Utilitzar hooks per inicialitzar o netejar dades compartides abans o després de l'execució dels escenaris.
Exemples pràctics
Utilitzant variables d'instància
Les variables d'instància són una manera senzilla de compartir dades entre passos dins de la mateixa classe de definició de passos.
class MyStepDefinitions # Variable d'instància per emmagatzemar dades @shared_data = nil Given('he creat un usuari') do @shared_data = { user: 'John Doe' } end When('l'usuari inicia sessió') do puts "Iniciant sessió per #{@shared_data[:user]}" # Aquí podríem afegir codi per simular l'inici de sessió end Then('l'usuari hauria de veure la seva pàgina de perfil') do puts "Verificant la pàgina de perfil per #{@shared_data[:user]}" # Aquí podríem afegir codi per verificar la pàgina de perfil end end
Utilitzant un context compartit
Un context compartit és un objecte que pot ser utilitzat per emmagatzemar dades que necessiten ser accessibles des de diferents classes de definició de passos.
class SharedContext attr_accessor :data def initialize @data = {} end end # Inicialitzem el context compartit Before do @context = SharedContext.new end Given('he creat un usuari') do @context.data[:user] = 'John Doe' end When('l'usuari inicia sessió') do puts "Iniciant sessió per #{@context.data[:user]}" end Then('l'usuari hauria de veure la seva pàgina de perfil') do puts "Verificant la pàgina de perfil per #{@context.data[:user]}" end
Exercicis pràctics
Exercici 1: Compartir dades amb variables d'instància
- Crea un escenari on un usuari afegeix un producte al carret de la compra.
- Utilitza variables d'instància per emmagatzemar el nom del producte i comprova que el producte apareix al carret.
Solució de l'Exercici 1
class ShoppingCartSteps @product_name = nil Given('he afegit un producte al carret') do @product_name = 'Laptop' puts "Producte afegit: #{@product_name}" end Then('el carret hauria de contenir el producte') do puts "Verificant el carret per #{@product_name}" # Aquí podríem afegir codi per verificar el carret end end
Conclusió
Compartir dades entre passos és una tècnica poderosa que ens permet mantenir els nostres escenaris organitzats i eficients. Hem vist com utilitzar variables d'instància i contextos compartits per aconseguir-ho. A mesura que avancem en el curs, aquestes tècniques seran fonamentals per escriure escenaris més complexos i realistes. En el següent mòdul, explorarem tècniques avançades de Gherkin per millorar encara més els nostres escenaris.
BDD amb Cucumber i Gherkin
Mòdul 1: Introducció al BDD
Mòdul 2: Començar amb Cucumber
- Configuració de l'entorn
- Creació del teu primer projecte Cucumber
- Comprensió dels fitxers de característiques
Mòdul 3: Escriure escenaris Gherkin
Mòdul 4: Definicions de passos
Mòdul 5: Tècniques avançades de Gherkin
Mòdul 6: Integració de Cucumber amb el desenvolupament
- Integració amb la integració contínua
- Utilitzant Cucumber amb diferents llenguatges
- Millors pràctiques per al BDD en equips
Mòdul 7: Funcions avançades de Cucumber
Mòdul 8: Aplicacions reals del BDD
- Estudi de cas: BDD en una aplicació web
- Estudi de cas: BDD en una arquitectura de microserveis
- Reptes i solucions en el BDD