测试Rails 3 Scopes有意义吗?

时间:2011-09-01 03:57:41

标签: ruby-on-rails ruby-on-rails-3 unit-testing named-scope

我有点受伤了。 Rails 3中的Scopes的单元测试是否有意义?

一方面,我正在编写代码,我应该测试该代码。

然而,另一方面,基本上我的所有范围都是微不足道的。检查传递参数的一个变量几乎是我迄今为止最复杂的范围。

scope :author, proc { |author| where(:author_user_id => author }

该代码很简单,并且或多或少地涵盖了实际使用范围的函数。

测试或不测试范围的最佳做法是什么?

2 个答案:

答案 0 :(得分:16)

David Chelimsky(Rspec的创建者)在Rspec Google Group中提供了以下示例:

describe User, ".admins" do 
  it "includes users with admin flag" do 
    admin = User.create! :admin => true 
    User.admin.should include(admin) 
  end

  it "excludes users without admin flag" do 
    non_admin = User.create! :admin => false 
    User.admin.should_not include(non_admin) 
  end 
end

class User < ActiveRecord::Base 
  named_scope :admins, :conditions => {:admin => true} 
end 

这显然与你的例子不同,但它应该让你知道如何做到这一点。上下文的相关主题在这里:http://groups.google.com/group/rspec/browse_thread/thread/6706c3f2cceef97f

答案 1 :(得分:3)

如果您认为范围太简单而无法测试,您肯定会忽略它,但如果您正在考虑测试范围,我会告诉您查看this answer并专注于测试行为而不是代码本身。