我正在使用ActiveSupport :: TimeZone根据邮政编码在某个位置设置时区。
def set_time_zone
self.time_zone = ActiveSupport::TimeZone.find_by_zipcode(self.zip)
end
这在应用程序本身中运行得很好。我在before_save上调用了set_time_zone。
在使用Rspec运行测试时,当它尝试运行set_time_zone方法时,它会在“ActiveSupport :: TimeZone”中使用“未定义的方法'find_by_zipcode'错误输出
我在规范助手中也加入了“require'active_support / time_with_zone'”。
现在我的工作是在测试环境中排除之前的保存。
任何想法都会很棒。
答案 0 :(得分:1)
find_by_zipcode
不是主ActiveSupport::TimeZone
对象的一部分。该对象的文档为here,您将找不到任何邮政编码。
Google搜索发现该方法是TZip gem的一部分。既然你说它适用于你的应用程序,我猜你有那个宝石。您可能只需将其添加到测试项目中。 (对不起,不熟悉Ruby或RSpec,所以不能指导你)。
我非常熟悉时区,我想我也借此机会解决一些关于将邮政编码映射到时区的一般想法的问题。我不太确定这是个好主意。
所以我的建议是完全避免这种方法。相反,请使用in this community wiki所述的方法之一。