0

场景 我在名为“ last_week
”的模型上有一个 named_scope。它所做的只是获取上周的记录。

我想对此进行测试,我的方法是测试返回的结果是否在一定范围内。我不知道这是否是在类方法上测试此功能的正确方法。

我不能使用 RSpec、Shouda 或其他 3rd 方客户端插件。如果我愿意,我只能使用 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

寻找有关此方法对与错的反馈。

4

1 回答 1

1

首先你的范围是错误的:因为代码是动态执行的,你的日期范围条件将取决于你启动服务器的时间......

用。。。来代替:

scope :last_week,  lambda { :conditions => { :created_at => 1.week.ago..DateTime.now.end_of_day } }

其次,为了测试,我会创建一些记录并检查范围是否正确:

  • 创建工厂

  • 创建两条记录

  • 设置created_at1 周 + 1 天前的一条记录

  • 检查您的范围仅检索一个(正确的)

于 2012-08-30T20:12:59.790 回答