我有点受伤了。 Rails 3中的Scopes的单元测试是否有意义?
一方面,我正在编写代码,我应该测试该代码。
然而,另一方面,基本上我的所有范围都是微不足道的。检查传递参数的一个变量几乎是我迄今为止最复杂的范围。
scope :author, proc { |author| where(:author_user_id => author }
该代码很简单,并且或多或少地涵盖了实际使用范围的函数。
测试或不测试范围的最佳做法是什么?
答案 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并专注于测试行为而不是代码本身。