En aquest tema, aprendrem com crear definicions de passos per als nostres escenaris escrits en Gherkin. Les definicions de passos són essencials per connectar els escenaris de Gherkin amb el codi que executa les accions descrites. Aquest procés és fonamental per implementar el BDD amb Cucumber.

Què són les definicions de passos?

Les definicions de passos són fragments de codi que defineixen com s'han d'executar els passos dels escenaris escrits en Gherkin. Cada pas en un escenari Gherkin es correspon amb una definició de pas que conté el codi necessari per realitzar l'acció descrita.

Conceptes clau:

  • Pas Gherkin: Una línia en un escenari que descriu una acció o una condició.
  • Definició de pas: El codi que implementa l'acció o la condició descrita en un pas Gherkin.
  • Associació: La connexió entre un pas Gherkin i la seva definició de pas es fa mitjançant expressions regulars.

Com crear definicions de passos

  1. Estructura bàsica d'una definició de pas

Una definició de pas es crea en un fitxer de codi, normalment en el mateix llenguatge de programació que el projecte. A continuació, es mostra un exemple bàsic en Java:

import io.cucumber.java.en.Given;

public class StepDefinitions {

    @Given("l'usuari es troba a la pàgina d'inici")
    public void l_usuari_es_troba_a_la_pagina_d_inici() {
        // Codi per navegar a la pàgina d'inici
        System.out.println("Navegant a la pàgina d'inici");
    }
}

  1. Anotacions de Cucumber

  • @Given, @When, @Then: Aquestes anotacions s'utilitzen per indicar el tipus de pas que s'està definint. Cada anotació es correspon amb una paraula clau de Gherkin.

  1. Utilització d'expressions regulars

Les expressions regulars s'utilitzen per associar un pas Gherkin amb la seva definició de pas. Això permet que una definició de pas pugui coincidir amb múltiples variacions d'un pas.

@When("l'usuari introdueix el nom d'usuari {string}")
public void l_usuari_introdueix_el_nom_d_usuari(String username) {
    // Codi per introduir el nom d'usuari
    System.out.println("Introduint el nom d'usuari: " + username);
}

Exercici pràctic

Objectiu

Crea una definició de pas per a l'escenari següent:

Escenari: L'usuari inicia sessió correctament

Given l'usuari es troba a la pàgina d'inici de sessió
When l'usuari introdueix el nom d'usuari "johndoe" i la contrasenya "password123"
Then l'usuari hauria de veure el missatge "Benvingut, johndoe!"

Solució

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

public class LoginStepDefinitions {

    @Given("l'usuari es troba a la pàgina d'inici de sessió")
    public void l_usuari_es_troba_a_la_pagina_d_inici_de_sessio() {
        // Codi per navegar a la pàgina d'inici de sessió
        System.out.println("Navegant a la pàgina d'inici de sessió");
    }

    @When("l'usuari introdueix el nom d'usuari {string} i la contrasenya {string}")
    public void l_usuari_introdueix_el_nom_d_usuari_i_la_contrasenya(String username, String password) {
        // Codi per introduir el nom d'usuari i la contrasenya
        System.out.println("Introduint el nom d'usuari: " + username);
        System.out.println("Introduint la contrasenya: " + password);
    }

    @Then("l'usuari hauria de veure el missatge {string}")
    public void l_usuari_hauria_de_veure_el_missatge(String message) {
        // Codi per verificar el missatge de benvinguda
        System.out.println("Verificant el missatge: " + message);
    }
}

Errors comuns i consells

  • Error: Pas no definit: Assegura't que l'expressió regular de la definició de pas coincideixi exactament amb el pas Gherkin.
  • Consell: Utilitza paràmetres en les expressions regulars per fer les definicions de passos més reutilitzables.

Conclusió

Les definicions de passos són una part fonamental del BDD amb Cucumber, ja que connecten els escenaris de Gherkin amb el codi executable. Amb la pràctica, podràs crear definicions de passos eficients i reutilitzables que facilitaran la implementació de proves BDD en els teus projectes. En el següent tema, explorarem com parametritzar els passos per fer-los encara més flexibles.

© Copyright 2024. Tots els drets reservats