Cucumber-js: ¿Cómo usar la etiqueta en mi escenario de función Cucumber.js?

Creado en 8 dic. 2015  ·  5Comentarios  ·  Fuente: cucumber/cucumber-js

Hola,

¿Cómo saber el escenario que llama a mi función? ¿Cómo usar las etiquetas en mi escenario de función?

En realidad tengo un escenario:

Feature: create module feature
  As a admin
  I want to use create module

  <strong i="8">@createModule</strong>
  Given I am logged as 'ADMIN'
    And I am on "/admin/create"
   Then The "book_id" field should be empty

Me gustaría usar mi etiqueta @createModule en mi función Entonces:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (myModule === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

Me gustaría obtener mi etiqueta @createModule , para especificar el escenario llamado u otra alternativa, me gustaría saber qué escenarios llaman a mi función.

Comentario más útil

Resuelto:

Yo añadí :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

y mi función:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

Todos 5 comentarios

Las etiquetas se utilizan para elegir qué escenarios ejecutar al ejecutar cucumber-js (consulte el LÉAME). Actualmente, los pasos no tienen forma de saber en qué escenario se están ejecutando actualmente. Todos los pasos de un escenario compartirán una instancia mundial (a la que se accede a través this en la definición del paso).

Resuelto:

Yo añadí :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

y mi función:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

@jechazelle gracias por publicar su solución. Necesito la misma funcionalidad para un caso de uso diferente :)

En pepino-js 3.2.1 I para usar

Before({timeout: 20000}, async function(testCase) {
  this.tags = testCase.pickle.tags.map((tag) => tag.name);`
  ...
}

La razón por la que lo estoy usando es porque la implementación de un paso en particular está fallando para un subconjunto conocido de escenarios, por lo que creé un ticket de defecto no crítico en nuestro sistema de seguimiento, etiqueté los escenarios fallidos con el número de ticket y luego agregué lógica. en la implementación del paso para devolver 'pendiente' si this.tags contiene el número de ticket.

Esto permite que la construcción vuelva a ser verde, mientras que los poderes fácticos deciden si quieren corregir el defecto o no.

Este hilo se ha bloqueado automáticamente ya que no ha habido ninguna actividad reciente después de que se cerró. Abra un nuevo problema para los errores relacionados.

¿Fue útil esta página
0 / 5 - 0 calificaciones