测试Rails 3 Scopes有意义吗?

Dre*_*rew 15 unit-testing named-scope ruby-on-rails ruby-on-rails-3

我有点不知所措.Rails 3中的Scopes的单元测试是否有意义?

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

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

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

该代码是微不足道的,并且或多或少地覆盖了实际使用范围的函数.

测试或不测试范围的最佳实践是什么?

Bvu*_*Ic7 17

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 
Run Code Online (Sandbox Code Playgroud)

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


Mau*_*res 3

如果您认为范围太简单而无法测试,您当然可以忽略它,但如果您正在考虑测试范围,我会告诉您查看这个答案并专注于测试行为而不是代码本身。

  • 我想说你不应该测试作用域的实现,而应该测试行为。[这是答案](http://stackoverflow.com/questions/3025103/how-to-test-a-scope-in​​-rails-3/3146311#3146311)我会链接到。 (2认同)