一種方法回應用于地理定位的兩個不同的 API,第二個用作備份:
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
找到一個回傳空的 lon/lat 集的資料集是具有挑戰性的(正統推動一個人先寫測驗),所以.. 有沒有辦法存根測驗,以便
do_geocode_lookup回傳空的經緯度值do_alternate_geocode_lookup(resource)方法被呼叫?并因此測驗?
sign_in operator_user
post admin_create_users_url, params: {user: { [...] } }
assert[...]
uj5u.com熱心網友回復:
使用Mocha,您可以存根一個方法,以便物件的任何實體都回傳一個指定的值。
例如....
Account.any_instance.stubs(:reviews_enabled).returns(:true)
它還允許您測驗一個方法是否被呼叫...
Account.any_instance.expects(:review_started)
您正在更改傳入的資源而不是回傳某些內容的事實使事情變得有點棘手,但是do_geocode_lookup如果找到某些內容,我很想回傳 true,否則回傳 false,以使事情更容易測驗。
def set_area(resource)
found = do_geocode_lookup(resource)
unless found
found = do_alternate_geocode_lookup(resource)
end
found
end
然后你可以在你的測驗中做這樣的事情......
Geocoder.any_instance.stubs(:do_geocode_lookup).returns(:false)
Geocoder.any_instance.expects(:do_alternate_geocode_lookup)
result = sut.set_area(user)
如果未呼叫預期方法,則會收到“未呼叫預期方法”錯誤。您可以使用存根和期望變得更加復雜,但在這種情況下,您不必這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/388334.html
下一篇:在HTML中強制快取腳本
