A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

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? Crea una cuenta 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 鈥渢esteo 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 鈥渂yebug鈥 se debe instalar la gema en gemfile, as铆:
gem 鈥榝aker鈥, 鈥榽> 1.9鈥 and
gem 鈥榖yebug鈥, '~> 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鈥檚 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