¿Cómo puedo simular las funciones del módulo de un módulo escrito por mí mismo dentro de mi proyecto?¿Cómo burlarse de las funciones del Módulo Ruby?
Dado el módulo y la función
module ModuleA::ModuleB
def self.my_function(arg)
end
end
que se llama igual que
ModuleA::ModuleB::my_function(with_args)
Cómo debería burlarse de él cuando se utiliza dentro de una función que estoy escribiendo especificaciones para?
duplicarlo (obj = double("ModuleA::ModuleB")
) no tiene sentido para mí, como se llama la función en el módulo y no en un objeto.
He intentado copiarlo (ModuleA::ModuleB.stub(:my_function).with(arg).and_return(something)
). Obviamente, no funcionó. stub
no está definido allí.
Luego lo he intentado con should_receive
. De nuevo NoMethodError
.
¿Cuál es la forma preferida de burlarse de un módulo y sus funciones?
Eso es, básicamente, lo que he intentado. Gracias por el resumen. Sin embargo, mi problema fue que puse ese 'should_receive' en un bloque' before: all'. Obviamente eso no funciona. Que estúpido de mi parte. –
@Torbjoern, oh sí. Estado allí. Me alegro de que haya funcionado. –
En rspec actual (3.6) da "Uso de' should_receive' de rspec-mocks 'old ': should' sintaxis sin habilitar explícitamente la sintaxis está en desuso. Use la nueva sintaxis': expect' o explícitamente habilite ': should' en su lugar. " –