Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

177
Visualizações
Cómo probar un generador de color aleatorio con broma

Tengo aquí una función que devuelve un color hexadecimal aleatorio

 function randomHex() { return `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`; }

¿Cómo puedo probarlo con broma? quiero saber si realmente devuelve un hexágono aleatorio o no

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

tal vez algo como

 const { randomHex } = require('../../../'); describe('', () => { it('', () => { const firstRandomColor = randomHex(); const secondRandomColor = randomHex(); const hexRegex = /^#(?:[0-9a-fA-F]{3}){1,2}$/; expect(firstRandomColor).toMatch(hexRegex); expect(secondRandomColor).toMatch(hexRegex); expect(firstRandomColor).not.toBe(secondRandomColor); }) })
about 4 years ago · Juan Pablo Isaza Relatório

0

Para citarme a mí mismo, de esta publicación :

Para que podamos pensar en cómo probarlo, aquí hay una implementación básica de un lanzamiento de moneda:

 const flipCoin = () => Math.random() < 0.5 ? "heads" : "tails";

Podemos estar bastante seguros de que si llamamos a esta función un gran número de veces obtendremos aproximadamente la mitad de cada resultado:

 > Array(10).fill(null).map(() => flipCoin()); [ "tails", "heads", "heads", "tails", "tails", "tails", "heads", "heads", "tails", "tails" ]

pero para una llamada determinada no podemos estar seguros de cuál será. Entonces, ¿cómo podemos escribir una prueba para eso? Podríamos volver a buscar el patrón de fachada, extraer const random = () => Math.random() y reemplazarlo con un doble de prueba. Esto funcionaría bien, pero estaría muy unido a la implementación:

 describe("flipCoin", () => { it("returns 'heads' when the random number is less than 0.5", () => { random.mockReturnValue = 0.3; expect(flipCoin()).toEqual("heads"); }); });

Una alternativa es escribir pruebas basadas en las propiedades de la implementación que queremos. Por ejemplo, aunque no conocemos los valores específicos, sí sabemos:

  • Siempre debe dar uno de los resultados esperados; y
  • No siempre debería dar el mismo resultado (de lo contrario () => "heads" sería una implementación válida).

En este caso, una prueba basada en propiedades podría verse así:

 describe("randomHex", () => { it("always returns a colour", () => { const colours = Array(100).fill(null).map(() => randomHex()); colours.every((colour) => expect(colour).toMatch(/^#[\da-f]{6}$/)); }); it("doesn't always return the same colour", () => { const colours = Array(100).fill(null).map(() => randomHex()); expect(new Set(colours).size).toBeGreaterThan(1); // or a higher number, but eg `.toEqual(colours.length)` can fail due to collisions }); });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda