[英]Rails Testing a named_scope with a date range
场景
我在名为“ last_week”的模型上有一个named_scope。 它所做的就是从上周获取记录。
我想测试一下,我的方法是测试返回的结果是否在一定范围内。 我不知道这是否是在类方法上测试此功能的正确方法。
我不能使用RSpec,Shoulda或其他第三方客户端插件。 我只需要使用Mocha。
# Model
class Article < ActiveRecord::Base
scope :last_week, :conditions => { :created_at => 1.week.ago..DateTime.now.end_of_day }
end
#Test
class ArticleTest < ActiveSupport::TestCase
test "named scope :last_week " do
last_week_range = DateTime.now.end_of_day.to_i - 1.week.ago.to_i
assert_in_delta last_week_range, Article.last_week.first.created_at - Article.last_week.last.created_at, last_week_range
end
end
寻找有关此方法是对还是错的反馈。
首先,您的范围是错误的:因为代码是即时执行的,所以日期范围条件将取决于您启动服务器的时间...
用。。。来代替:
scope :last_week, lambda { :conditions => { :created_at => 1.week.ago..DateTime.now.end_of_day } }
其次,为了进行测试,我将创建一些记录,并检查范围是否得到正确的记录:
建立工厂
创建两个记录
在1周+ 1天前将created_at
设置为一项记录
检查您的范围仅检索一个(正确的)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.