我有點撕裂。對Rails 3中的Scopes進行單元測試是否合理?測試Rails 3範圍是否有意義?
一方面,我正在編寫代碼,我應該測試該代碼。
但是,另一方面,基本上我所有的範圍都是微不足道的。根據傳遞的參數檢查一個變量幾乎是迄今爲止最複雜的範圍。
scope :author, proc { |author| where(:author_user_id => author }
該代碼是微不足道的,並且還或多或少覆蓋在實際使用範圍的功能。
測試或不測試示波器的最佳做法是什麼?
我有點撕裂。對Rails 3中的Scopes進行單元測試是否合理?測試Rails 3範圍是否有意義?
一方面,我正在編寫代碼,我應該測試該代碼。
但是,另一方面,基本上我所有的範圍都是微不足道的。根據傳遞的參數檢查一個變量幾乎是迄今爲止最複雜的範圍。
scope :author, proc { |author| where(:author_user_id => author }
該代碼是微不足道的,並且還或多或少覆蓋在實際使用範圍的功能。
測試或不測試示波器的最佳做法是什麼?
如果您認爲範圍太簡單而無法測試,那麼您肯定可以忽略它,但是如果您考慮測試範圍,我會告訴您看看this answer並專注於測試行爲而不是代碼本身。
我想說你不應該測試範圍實現,而是行爲。 [這是答案](http://stackoverflow.com/questions/3025103/how-to-test-a-scope-in-rails-3/3146311#3146311)我會鏈接到。 – Uzbekjon
大衛赫利姆斯基(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
你爲什麼定義這個範圍?使用類似標準的協會來訪問作者身邊的任何東西不是更合適嗎? –
用戶模型當然可以獲得他們創作的所有關聯對象的列表。 'has_many:authored_articles ...'這只是我的光標着陸的第一個簡單示波器。當我有一些其他加入的作用域時會使用它 – Drew