En aquest tema, explorarem com utilitzar taules de dades en Cucumber per gestionar i provar múltiples conjunts de dades de manera eficient. Les taules de dades són una eina poderosa per simplificar la gestió de dades en els teus escenaris de prova.

Què són les taules de dades?

Les taules de dades en Cucumber permeten definir múltiples conjunts de dades dins d'un escenari Gherkin. Això és especialment útil quan necessites provar el mateix escenari amb diferents dades d'entrada.

Característiques clau de les taules de dades:

  • Estructura tabular: Les dades es defineixen en forma de taula, amb files i columnes.
  • Flexibilitat: Pots utilitzar taules de dades per passar múltiples paràmetres a les teves definicions de passos.
  • Claredat: Les taules fan que els escenaris siguin més llegibles i fàcils de mantenir.

Exemple de taula de dades en un escenari

Vegem un exemple pràctic d'un escenari que utilitza una taula de dades:

Funcionalitat: Calculadora de descomptes

  Escenari: Aplicar descomptes a diferents productes
    Donat els següents productes
      | producte   | preu | descompte |
      | Llibre     | 20   | 5         |
      | Llapis     | 2    | 0.5       |
      | Quadern    | 5    | 1         |
    Quan aplico el descompte
    Llavors el preu final hauria de ser
      | producte   | preu final |
      | Llibre     | 15         |
      | Llapis     | 1.5        |
      | Quadern    | 4          |

Explicació de l'exemple:

  • Taula de dades d'entrada: Defineix els productes amb els seus preus i descomptes.
  • Taula de dades de sortida: Defineix el preu final esperat després d'aplicar el descompte.

Implementació de les definicions de passos

Per treballar amb taules de dades, necessitem definir els passos corresponents en el nostre codi. A continuació es mostra com podríem implementar-ho en Java:

import io.cucumber.datatable.DataTable;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;

import java.util.List;
import java.util.Map;

public class DiscountSteps {

    @Given("els següents productes")
    public void els_seguents_productes(DataTable dataTable) {
        List<Map<String, String>> productes = dataTable.asMaps(String.class, String.class);
        for (Map<String, String> producte : productes) {
            String nom = producte.get("producte");
            double preu = Double.parseDouble(producte.get("preu"));
            double descompte = Double.parseDouble(producte.get("descompte"));
            // Lògica per emmagatzemar o processar els productes
        }
    }

    @When("aplico el descompte")
    public void aplico_el_descompte() {
        // Lògica per aplicar el descompte als productes
    }

    @Then("el preu final hauria de ser")
    public void el_preu_final_hauria_de_ser(DataTable dataTable) {
        List<Map<String, String>> preusFinals = dataTable.asMaps(String.class, String.class);
        for (Map<String, String> preuFinal : preusFinals) {
            String nom = preuFinal.get("producte");
            double preuEsperat = Double.parseDouble(preuFinal.get("preu final"));
            // Lògica per verificar el preu final
        }
    }
}

Explicació del codi:

  • DataTable: Utilitzem l'objecte DataTable per accedir a les dades de la taula.
  • asMaps: Converteix les dades de la taula en una llista de mapes, on cada mapa representa una fila de la taula.
  • Processament de dades: Iterem sobre les dades per aplicar la lògica de negoci necessària.

Exercici pràctic

Exercici:

Crea un escenari que utilitzi una taula de dades per gestionar una llista de clients amb els seus saldos inicials i les transaccions que han realitzat. Implementa les definicions de passos per calcular el saldo final de cada client.

Solució:

Funcionalitat: Gestió de comptes de clients

  Escenari: Calcular el saldo final dels clients
    Donat els següents clients
      | client   | saldo inicial | transacció |
      | Anna     | 1000          | -200       |
      | Joan     | 500           | 300        |
      | Maria    | 750           | -50        |
    Quan calculo el saldo final
    Llavors el saldo final hauria de ser
      | client   | saldo final |
      | Anna     | 800         |
      | Joan     | 800         |
      | Maria    | 700         |

Implementa les definicions de passos seguint l'exemple anterior, adaptant la lògica per calcular els saldos finals.

Conclusió

Les taules de dades són una eina essencial en Cucumber per gestionar múltiples conjunts de dades de manera clara i eficient. Amb la pràctica, podràs utilitzar-les per simplificar i millorar la llegibilitat dels teus escenaris de prova. En el següent tema, explorarem les expressions de Cucumber per fer les teves definicions de passos encara més flexibles.

© Copyright 2024. Tots els drets reservats