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

127
Vistas
¿Qué alcance cubre la prueba unitaria en un lenguaje débilmente tipeado?

La mejor manera en que puedo expresar mi pregunta es con un ejemplo.

 class foo{ constructor(size) { this.bar = new Array(size); } baz(index) { this.body[index] = true; } }

Ignorando el constructor, supongamos que estamos realizando pruebas unitarias baz() . Se espera lógicamente que baz tome un index de entrada que esté entre 0 y bar.length - 1 , pero también se puede compilar lo siguiente:

  1. baz(['hey'])
  2. baz(5) // with an array size of 2
  3. baz(true)
  4. baz('0')

Ahora, he estado investigando mucho sobre lo que realmente estamos probando con pruebas unitarias, y la mejor respuesta que puedo obtener de lo que leo es que estamos probando el comportamiento de la función dentro de los límites de su contrato lógico con qué/quién lo llama. AKA, prueba la implementación mientras asume implícitamente que se llama correctamente .

Estoy completamente satisfecho con esto, pero lo que quiero saber es, ¿dónde trazamos esa línea? Ninguno de los ejemplos anteriores causará un error tipográfico, pero puedo ignorar 1,3 y probablemente 4 si sigo lo que aprendí anteriormente.

Pero, ¿debería preocuparme por 2? ¿O también asumo que el 'contrato' de la función se mantendrá no solo en términos de escritura implícita de las entradas, sino también en sus límites lógicos?

¿Debo probar y dar cuenta del ejemplo 2 en mi código?

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

0

Depende de si el contrato dice " ... y para todas las demás entradas, la función genera una excepción ", en cuyo caso debe probar que se genera como se esperaba, o si el contrato simplemente dice (o implica) " ... y no llámelo con cualquier otra cosa, es posible que no funcione o haga cosas impredecibles "(es decir , un comportamiento indefinido ), en cuyo caso no necesita probarlo.

Un número fuera del rango esperado (su caso de ejemplo 2) y un valor de un tipo inesperado (casos 1, 3, 4) pueden caer independientemente en cualquier lado de esa distinción. Puedes dibujar la línea donde quieras. Solo asegúrese de ganar puntos de bonificación al documentar dónde lo dibujó.

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