Quiero probar si una función invoca otras funciones correctamente con Ruby minitest, pero no puedo encontrar una adecuada assert
para probar desde el doc.¿Cómo afirmar cierto método se llama con Ruby minitest framework?
class SomeClass
def invoke_function(name)
name == "right" ? right() : wrong()
end
def right
#...
end
def wrong
#...
end
end
El código de prueba:
describe SomeClass do
it "should invoke right function" do
# assert right() is called
end
it "should invoke other function" do
# assert wrong() is called
end
end
Para la versión objeto concreto, hay 'must_send' para cuando el uso de' minitest/spec' – Frost
Dime si me falta algo, pero creo que la respuesta de @ jing-li a continuación es correcta al mencionar que 'assert_send' no es apropiado aquí. El OP quiere probar que se llama 'derecho' cuando se invoca' invoke_function'. Además, se necesita 'obj.verify' para asegurar que se llame' right' al objeto simulado en la primera parte de esta respuesta. Para cualquiera que lea esto, asegúrese de que sus pruebas fallen antes de que las aprueben. – monozok
Creo que usar assert_send no es una opción segura. de acuerdo con los documentos: http://ruby-doc.org/stdlib-2.0.0/libdoc/minitest/rdoc/MiniTest/Assertions.html#method-i-assert_send –