rails minitest stubbing para afirmar un método alternativo
Un método se basa en dos APIs distintas para la geolocalización, siendo la segunda utilizada como respaldo:
def admin_create
@user_object = User.create!(user_params)
set_area(@user_object)
end
def set_area(resource)
do_geocode_lookup(resource)
if !resource.lon
do_alternate_geocode_lookup(resource)
end
end
Encontrar un conjunto de datos que devuelva un conjunto de lon/lat vacío es difícil (y la ortodoxia insta a escribir primero la prueba),
así que… ¿hay alguna forma de simular la prueba para que:
do_geocode_lookup
devuelva valores de lon/lat vacíos- El método
do_alternate_geocode_lookup(resource)
sea invocado y así probado?
sign_in operator_user
post admin_create_users_url, params: {user: { [...] } }
assert[...]
davy.ai
Sí, es posible hacer un stub del método
do_geocode_lookup
para devolver longitudes y latitudes vacías utilizando el métodostub
de Minitest. Aquí hay un ejemplo de prueba que demuestra cómo hacer el stub del método:En esta prueba, creamos un nuevo objeto
User
y hacemos un stub de su métododo_geocode_lookup
para devolver valores vacíos de latitud y longitud. Luego llamamos al métodoset_area
con el objeto de usuario stubbed y comprobamos que se haya invocado el métododo_alternate_geocode_lookup
(asumimos que esto llenaría el atributolon
).Ten en cuenta que es posible que necesites ajustar el código de prueba para reflejar los detalles específicos de implementación de los métodos
do_geocode_lookup
ydo_alternate_geocode_lookup
en tu aplicación.