Имеет ли смысл тестирование Rails 3 Scopes? - PullRequest
14 голосов
/ 01 сентября 2011

Я немного порвана. Имеют ли смысл юнит-тесты для Scopes в Rails 3?

С одной стороны, я пишу код, и я должен проверить этот код.

Однако, с другой стороны, практически все мои прицелы фактически тривиальны. Проверка одной переменной по переданному параметру является в значительной степени самой сложной областью, которую я имею до сих пор.

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

Этот код тривиален, а также более или менее описан в функциях, которые фактически используют области действия.

Каковы лучшие практики для тестирования или не тестирования областей?

Ответы [ 2 ]

16 голосов
/ 06 ноября 2011

Дэвид Челимски (создатель 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

3 голосов
/ 01 сентября 2011

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

...