我有一个项目,我在其中使用 ActiveRecord 将信息存储在 sqlite db 文件中。我没有使用 Rails,AR 似乎完美地完成了这项工作。我的问题是如何在不访问数据库的情况下测试我的课程?我发现了一些可以解决问题的宝石(FactoryGirl、UnitRecord),但它们是用来与 Rails 一起工作的。
class News < ActiveRecord::Base
belongs_to :feed
def delete_old_news_if_necessary
# time_limit = Settings::time_limit
return if time_limit.zero?
News.destroy_all("date < #{time_limit}")
end
def delete_news_for_feed(feed_id)
News.destroy_all(:id => feed_id)
end
def news_for_feed(feed_id)
News.find(feed_id)
end
end
我读到我可以做一个列存根:
Column = ActiveRecord::ConnectionAdapters::Column
News.stubs(:columns).returns([Column.new(),...])
这是进行这些测试的正确方法吗?另外,什么时候最好有一个单独的数据库来测试并创建它,运行测试,然后删除它?