gpt4 book ai didi

ruby-on-rails - 测试是否在Ruby on Rails单元测试中调用了函数

转载 作者:行者123 更新时间:2023-12-04 06:26:24 25 4
gpt4 key购买 nike

我正在使用TestUnit,并想确定是否调用了函数。我在名为Person的类中有一个方法,将其设置为“before_update”:

def geocode_if_location_info_changed
if location_info_changed?
spawn do
res = geocode
end
end
end

然后我有一个单元测试:
def test_geocode_if_location_info_changed
p = create_test_person
p.address = "11974 Thurloe Drive"
p.city = "Baltimore"
p.region = Region.find_by_name("Maryland")
p.zip_code = "21093"
lat1 = p.lat
lng1 = p.lng

# this should invoke the active record hook
# after_update :geocode_if_location_info_changed
p.save
lat2 = p.lat
lng2 = p.lng
assert_not_nil lat2
assert_not_nil lng2
assert lat1 != lat2
assert lng1 != lng2

p.address = "4533 Falls Road"
p.city = "Baltimore"
p.region = Region.find_by_name("Maryland")
p.zip_code = "21209"

# this should invoke the active record hook
# after_update :geocode_if_location_info_changed
p.save

lat3 = p.lat
lng3 = p.lng
assert_not_nil lat3
assert_not_nil lng3
assert lat2 != lat3
assert lng2 != lng3
end

如何确保调用了“地理编码”方法?对于我要确保在位置信息未更改的情况下不调用它的情况,这尤为重要。

谢谢!

最佳答案

使用摩卡咖啡。这测试了过滤器的逻辑:

def test_spawn_if_loc_changed
// set up omitted
p.save!
p.loc = new_value
p.expects(:spawn).times(1)
p.save!
end

def test_no_spawn_if_no_data_changed
// set up omitted
p.save!
p.other_attribute = new_value
p.expects(:spawn).times(0)
p.save!
end

关于ruby-on-rails - 测试是否在Ruby on Rails单元测试中调用了函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1676624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com