2011-09-01 5 views
12

조금 찢습니다. Scopes in Rails 3의 단위 테스트는 의미가 있습니까?Rails 3 스코프를 테스트하는 것이 의미가 있습니까?

한편으로는 코드를 작성 중이므로 해당 코드를 테스트해야합니다.

그러나 반면에 기본적으로 내 모든 범위는 실제로 사소한 것입니다. 전달 된 매개 변수에 대해 하나의 변수를 확인하는 것은 내가 지금까지 가지고있는 가장 복잡한 범위입니다.

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

그 코드는 사소한도 다소 실제로 범위를 사용하는 기능에 덮여있다.

범위를 테스트하거나 테스트하지 않는 최상의 방법은 무엇입니까?

+0

왜이 범위를 정의하고 있습니까? 이것이 협회와 같은 표준을 사용하여 저자 측으로부터 무엇이든지간에 컬렉션에 액세스하는 것이 더 적절하지 않습니까? –

+0

사용자 모델은 제작 한 모든 관련 객체의 목록을 확실히 얻을 수 있습니다. 'has_many : authored_articles ... '이것은 커서가 착륙 한 간단한 범위 중 첫 번째 것입니다. 다른 여러 조인 된 스코프가있을 때 사용됩니다 – Drew

답변

2

스코프가 너무 간단해서 테스트 할 수 없다고 생각하면 확실하게 무시할 수 있지만 스코프 테스트를 생각할 경우 this answer을보고 테스트 동작에만 초점을 맞추고 코드 자체에는 초점을 두지 말라고 설명합니다.

+1

범위 구현을 테스트해서는 안된다고 말하고 싶지만, 비헤이비어입니다. [여기에 대답입니다] (http://stackoverflow.com/questions/3025103/how-to-test-a-scope-in-rails-3/3146311#3146311) 나는 링크를했습니다. – Uzbekjon

15

데이비드 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

관련 문제