繁体   English   中英

Rails用日期范围测试named_scope

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM