No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

4D
22H
50M
17S
Curso de Ruby

Curso de Ruby

Simón Soriano

Simón Soriano

Testing en Ruby

19/39
Recursos

El testing es una práctica de programación con la que podemos escribir código que va a probar el código de nuestra aplicación para garantizar que con cada cambio que le agreguemos al proyecto, no vamos a hacer que funcionalidades anteriores se vayan a ver afectadas por este nuevo cambio.

En Ruby existe una librería que nos ayuda con esto, se llama MiniTest

Aportes 10

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Pruebas automatizadas

Significa que no tendrás que ejecutar tu programa y jugar con él (lo que es lento) para arreglar los errores. El testeo de unidades es mucho más rápido que el “testeo manual”.

Pueden ser

  • Las pruebas unitarias se escriben para probar la lógica de métodos específicos de la aplicación, aislando sistemas externos como bases de datos, otros servidores, etc.

  • Las pruebas de integración se escriben para probar funcionalidades completas de la aplicación y pueden involucrar componentes y sistemas externos como navegadores, bases de datos, frameworks, etc.

  • TDD es un proceso para escribir pruebas automatizadas en el que primero se escribe una prueba fallida, después se implementa el código para que funcione y, por último, se mejora el código verificando que la prueba siga pasando.

  • BDD es muy similar pero el lenguaje cambia un poco para que sea entendible tanto por programadores como por personas que tienen mayor conocimiento del negocio.

Librerías más populares

Conceptos extraídos de :

La validación if !calc.sum(...) puede ser reemplazada por: unless calc.sum() que se ejecuta el bloque de código cuando la condición no se cumple

Creo que no me termina de convencer algunas partes del curso, algunas partes del código se pasan sin dar una explicación explicita.

Les dejo un tutorial que explicar mejor el uso del ciclo each -->https://www.youtube.com/watch?v=VkUsiyv54Vc&list=PLMK2xMz5H5Zv8eC8b4K6tMaE1-Z9FgSOp&index=12

Creo que habría estado mejor el operador !=

No se olviden que para utilizar el require “byebug” se debe instalar la gema en gemfile, así:
gem ‘faker’, ‘~> 1.9’ and
gem ‘byebug’, '~> 11.1.1’
Luego le dan de nuevo en la consola :
bundle install.
Listo.

Testing


Es una práctica de programación con la podemos escribir código que va ha probar el código de nuestra aplicación. Así garantizamos que con nuevos cambios de nuestro proyecto no afecten funcionales anteriores.

Vamos a utilizar la librería de byebug, así que hay que instalarla en nuestro proyecto.

require "byebug"

class Calculator
    def sum(a,b)
        a + b
    end

    def substract(a,b)
        a - b
    end
end

calc = Calculator.new
tests_sum = {
    [1,2] => 3,
    [5,6] => 11,
    [100,1] => 101
}

tests_sum.each do |input, expect_result|
    #byebug
    if !(calc.sum(input[0], input[1]) == expect_result)
        raise "Test failed for input #{input}. Expected result #{expect_result}."
    end
end

En Ruby cualquier expresión o número que tenga un ’!' nos va retornar que es false, si queremos que retorne true tenemos que poner ’!!'

Otra forma de implementar el test sería asi:

test_sum.each do |input, expect_result|
    if calc.sum(input[0], input[1]) != expect_result
        raise "Test failed for input #{input}. Expected result #{expect_result}"
    end
end

Les dejo mi código de esta clase 😃

class Calculator
  def sum(number_one, number_two)
    number_one + number_two
  end

  def substract(number_one, number_two)
    number_one - number_two
  end
end

my_calc = Calculator.new

test_sum = {
  [1, 2] => 3,
  [3, 5] => 8,
  [2, 2] => 4
}

test_sum.each do |input, expected_result|
  if my_calc.sum(input[0], input[1]) != expected_result
    raise "Test Failed for input #{input}. Expected result #{expected_result}."
  end
end

Es un poco más digerible para principiantes utilizar el operador !=

tests_sum.each do |input, expected_result|
  if calc.sum(input[0], input[1]) != expected_result
    raise "Test failed for input #{input}. Expected result #{expected_result}"
  end
end

Pueden ampliar un poco más sobre el uso de operadores y sentencias condicionales en The Beginner’s Guide to Ruby If & Else Statements

class Calculator
    def sum(a, b)
        a + b
    end
    def resta(a, b)
        a - b
    end
end

cal = Calculator.new
sum_test = {
    [1,2] => 12,
    [1,2] => 3,
    [5,6] => 11,
    [100,1] => 101
}

sum_test.each do |input, expect_result|
    if ! (cal.sum(input[0],input[1]) == expect_result)
        puts "Test Failed #{input[0]} + #{input[1]} = #{expect_result}"
    else
        puts "Correct #{input[0]} + #{input[1]} = #{expect_result}"
    end
end