Small Ruby testing framework done in the context of the TADP course at the University UTN-FRBA.
Provides basic functionality to write tests and run them.
Example of how to use:
require_relative '../lib/tadspec'
class Suite
class Persona
def initialize(edad)
@edad = edad
end
def es_un_metodo_mockeado?
false
end
def viejo?
@edad > 29
end
end
# 1 should be 1
def testear_que_1_deberia_ser_1
1.deberia ser 1
end
# Test truthiness of a method return
def testear_que_una_persona_deberia_ser_vieja
p = Persona.new(30)
p.deberia ser_viejo
end
endA test suite is any class that contains test methods. A test method is any method that starts with the word testear_que.
Asserts that the receiver is equal to the argument using == comparison.
You can use ser as an alias of ser_igual.
def testear_que_1_es_igual_a_1
1.deberia ser_igual 1
1.deberia ser 1
endAsserts with > or < comparison.
def testear_que_2_es_mayor_a_1
2.deberia ser mayor_a 1
end
def testear_que_1_es_menor_a_2
1.deberia ser menor_a 2
endAsserts that the receiver responds to the argument.
def testear_que_1_responde_a_to_s
1.deberia entender :to_s
endAsserts that the receiver is equal to one of the following arguments.
def testear_que_1_es_igual_a_1_o_2
1.deberia ser uno_de_estos 1, 2
4.deberia ser uno_de_estos [4,5,6]
endAsserts that the receiver raises the given exception.
def testear_que_deberia_explotar_con_ZeroDivisionError
proc { 1 / 0 }.deberia explotar_con ZeroDivisionError
endAsserts that the receiver returns true after calling the given method.
class Suite
class Persona
def initialize(edad)
@edad = edad
end
def mayor?
@edad > 18
end
end
# Test truthiness of a method return
def testear_que_una_persona_deberia_ser_vieja
p = Persona.new(18)
p.deberia ser_mayor
end
endAsserts that the receiver has the given attribute.
class Suite
class Persona
attr_accessor :edad
def initialize(edad)
@edad = edad
end
end
def testear_que_una_persona_deberia_tener_edad
p = Persona.new(18)
p.deberia tener_edad
end
endMock a method of an object.
class Suite
class Persona
def es_un_metodo_mockeado?
false
end
end
# Test that the mock is working
def testear_que_una_persona_deberia_mockear_un_metodo
p = Persona.new(30)
p.es_un_metodo_mockeado?.deberia ser false
p.mockear :es_un_metodo_mockeado?, true
p.es_un_metodo_mockeado?.deberia ser true
end
# Test that the mock respects scope
def testear_que_respecta_scope
p = Persona.new(28)
p.es_un_metodo_mockeado?.deberia ser false
end
endGives you the ability to check if a method was called on an object.
Provides the following methods: haber_recibido & con_argumentos
def testear_que_espia_a_un_metodo_y
p = Persona.new(28)
p_spied = espiar(p)
p_spied.mayor
p_spied.deberia haber_recibido(:mayor).con_argumentos
end