簡體   English   中英

如何測試范圍?

[英]How to test scopes?

試圖找到但沒有成功。 只是想知道如何在Rails 3中測試范圍。

可以使用rspec,shoulda或只是一個測試單元。

謝謝。

實際上,我嘗試這種方式,但它不是完整的測試,因為它仍然需要放置order()方法。

范圍:

scope :recents_available, where(:available => true, :locked => false).order("created_at DESC")

describe Job, ":recents_available" do

it "should have the scope" do
  Job.should respond_to(:recents_available)
end

it "should include recents jobs that are available and unlocked" do
  @job = Factory(:job, :available => true, :locked => false  )      
  Job.recents_available.should include(@job)
end

結束

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

我確信這是一個更優雅的解決方案,但我總是設置一些應該而且不應該在我的范圍內的對象。 在調用范圍之后,我檢查返回的對象是否應該,並且沒有它不應該的對象。

如果有的話,我希望得到其他答案的啟發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM