2011-01-30 3 views
17

попытался найти, но безуспешно. Просто интересно, как я могу проверить области в 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 

конец

ответ

25

Дэвид 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

4

Я уверен, что есть более элегантное решение, но я всегда просто установить некоторые объекты, которые должны и не должны быть в моей компетенции. После вызова области действия я проверяю, что возвращаемый объект имеет то, что ему нужно, и не имеет объекта, которого он не должен.

Во всяком случае, я надеюсь просветить другие ответы.

+0

Настройка двух краевых шкафов и проверка вашего метода (что действительно является областью) - это элегантное тестовое решение, поэтому не беспокойтесь об использовании приведенного выше ответа – Houen

Смежные вопросы