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

  1. Crea un escenari on un usuari afegeix un producte al carret de la compra.
  2. 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.

© Copyright 2024. Tots els drets reservats