Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

182
Vistas
¿Cómo probar acciones personalizadas de JavaScript Github?

Quiero crear una acción Github de JavaScript y usar Jest con fines de prueba. Según los documentos , comencé a analizar la entrada, dado el siguiente código de ejemplo

 import { getInput } from '@actions/core'; const myActionInput = getInput('my-key', { required: true });

Ejecutar este código durante el desarrollo genera el siguiente error

Entrada requerida y no suministrada: my-key

como se esperaba porque el código no se ejecuta dentro de un entorno de acción de Github. Pero, ¿es posible crear pruebas para eso? P.ej

 describe('getMyKey', () => { it('throws if the input is not present.', () => { expect(() => getMyKey()).toThrow(); }); });

¿Cómo puedo "falsificar"/simular un entorno de este tipo con un contexto para garantizar que mi código funcione como se esperaba?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Hay varios enfoques que puede tomar.

Establecer entradas manualmente

Las entradas se pasan a las acciones como variables de entorno con el prefijo INPUT_ y en mayúsculas. Sabiendo esto, puede configurar la variable de entorno respectiva antes de ejecutar la prueba.

En su caso, la entrada my-key debería estar presente como la variable de entorno denominada INPUT_MY-KEY .

Esto debería hacer que su código funcione:

 describe('getMyKey', () => { it('throws if the input is not present.', () => { process.env['INPUT_MY-KEY'] = 'my-value'; expect(() => getMyKey()).toThrow(); }); });

Usa la burla de Jest

Puede usar jest.mock o jest.spyOn y, por lo tanto, simular el comportamiento de getInput .

Documentos: simulacros de clase ES6

Acción abstracta

No me gusta establecer variables de entorno globales, porque una prueba puede afectar a otra según el orden en que se ejecutan.

Además, no me gusta burlarme usando jest.mock , porque se siente como mucha magia y por lo general paso demasiado tiempo haciendo que haga lo que quiero. Los problemas son difíciles de diagnosticar.

Lo que parece brindar todos los beneficios con un poco más de código es dividir la acción en una función que se puede llamar pasando los objetos "globales" como core .

 // index.js import core from '@actions/core'; action(core);
 // action.js function action(core) { const myActionInput = core.getInput('my-key', { required: true }); }

Esto le permite probar muy bien su acción así:

 // action.js describe('getMyKey', () => { it('gets required key from input', () => { const core = { getInput: jest.fn().mockReturnValueOnce('my-value') }; action(core); expect(core.getInput).toHaveBeenCalledWith('my-key', { required: true }); }); });

Ahora podría decir que ya no estamos probando si la acción arroja un error si la entrada no está presente, pero también considere lo que realmente está probando allí: está probando si la acción central arroja un error si la entrada es perdido. En mi opinión, este no es su propio código y, por lo tanto, vale la pena probarlo. Todo lo que quiere asegurarse es que está llamando a la función getInput correctamente de acuerdo con el contrato (es decir, documentos).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda