Búsqueda de sitios web

javascript - Jest - Obtener nombre de la prueba y descripción


Estoy tratando de obtener el nombre del test que se pasó a la función it(name: string) de Jest, así como el nombre de la descripción que se pasó a describe(name: string, ....).

¿Hay alguna manera de acceder a esto de alguna forma?

Por ejemplo

describe("Description", () => {
  it("Test", () => {

    const description = "How do I get the description name?"
    const test = "How do I get the test name?";

    expect(`${description} - ${test}`).toBe("Description - Test");
  });
})

Enlace de CodeSandbox

Actualización 1

La razón subyacente por la que quiero esto es porque quiero hacer algunas convenciones de nombres de instantáneas personalizadas basadas en describe, test y algunas variables de entorno (por ejemplo, tamaños de ventana gráfica + datos simulados/reales).

Respuesta #1

Puedes lograr esto usando un comparador personalizado

expect.extend({
  testName(exp) {
      return {
          pass: this.currentTestName === exp,
          message: () => '',
      };
  },
});

describe("Description", () => {
  it("Test", () => {
      expect(`Description Test`).testName();
  });
});

Respuesta #2

Quizás, la solución más obvia es lo que quieres. En lugar de pasar literales a describe y it, simplemente guárdalos en constantes respectivas que luego podrían ser fácilmente accesibles dentro de los casos de prueba respectivos a través del alcance exterior.

Estas constantes podrían inicializarse fácilmente ya sea con valores de las variables de entorno o con valores predeterminados literales.

const suiteA = 'Description';
describe(suiteA, () => {
  const testA = 'Test';
  it(testA, () => {
    expect(`${suiteA} - ${testA}`).toBe("Description - Test");
  });
})