2011-02-10 2 views
2

필자는 코드를 하나씩 일치시키는 테스트 작성의 유용성에 대해 궁금해하고 있습니다. 설정과 유사한 코드를 한 줄씩 작성하는 테스트의 용도는 무엇입니까?

그냥 예를

: 레일에, 당신은 사용 routes.rb에서 한 줄에 7 개 편안한 경로를 정의 할 수 있습니다

resources :products 

BDD/TDD는 코드를 작성 먼저 테스트 규정하고있다. 이 줄의 모든 효과를 테스트하기 위해 devs는 매크로를 작성합니다. 했어야을 위해 : 나는 매크로를 쓴 사람에 선택하는 것을 시도하고 있지 않다 http://kconrails.com/2010/01/27/route-testing-with-shoulda-in-ruby-on-rails/

class RoutingTest < ActionController::TestCase 
    # simple 
    should_map_resources :products 
end 

, 이것은 내가 모든 레일을 통해 볼 패턴의 단지 예입니다.

그냥 코드의 용도가 무엇인지 궁금 할뿐입니다. 결국에는 코드를 복제하는 것이고 테스트하는 유일한 것은 레일즈가 작동한다는 것입니다. 그래서 예는 수,

"테스트가 코드를 문서화 할 필요가 당신은 그뿐만 아니라 실제 코드로 테스트 매크로를 변환하는 도구 ...

나는 주위에 물어

, 사람들이 내 질문에 대답을 쓸 수 한 줄에 해당하는 한 줄이라도 쓰기가 가능합니다. "

귀하의 의견은 무엇입니까?

답변

1

큰 실수를 피하는 것이 좋습니다.

예를 들어 병합 또는 편집 후이 리소스는 삭제됩니다. 그걸 어떻게 알아?

이 테스트를 통해 immediatly,이 리소스가 필요하다는 것을 알 수 있습니다. 변경하거나 삭제하려면 2 개의 변경이 필요합니다. 실수로 할 수있을뿐만 아니라.

0

나는 그런 것을 명시 적으로 테스트해야한다고 생각하지 않습니다.

페이지가 테스트에서 렌더링 될 때 form_for는 경로가 존재하지 않는다고 불평 할 것입니다. 그런 다음 추가합니다. 그리고 그것이 자원 방법이거나 명명 된 경로라면, 그건 내 견해로는 중요하지 않습니다. 이후에 여러 개의 명명 된 경로가있을 때 경로 파일을 리팩터링하여 여러 개의 명명 된 경로 대신 자원을 사용할 수 있습니다.

+0

이것을 생략하면 오류가 다른 곳에서 발견 될 것이라고 동의합니다. 그러나 코드가 작동해야하는 경우 명시 적으로 테스트하지 않는 것이 어떻습니까? – nathanvda

+1

제품을 매핑해야하는 이유는 무엇입니까? '/ products/12'또는 이와 비슷한 경로가 있어야한다는 요구 사항이 될 수 있습니다. 어쨌든 원하는대로 구현할 수 있습니다. –

0

더 나은 코드 작성을 돕는 것 이상의 테스트가 필요합니다. 코드가 앞으로도 계속 작동하는지 확인해야합니다. Regression Testing. 그것이 바로 이러한 종류의 검사가 제공하는 것입니다.

1

내 상사 (길에 코더가있는 사람)는 테스트에서 좋은 사례가 있지만 때로는 테스트 할 대상을 알아야 할 때가 있습니다. 귀하의 경우, 레일이 작동하는지 테스트하는 것이 좋지만, 우리 모두 알다시피 이미 테스트를 마쳤습니다. 이를 위해 테스트를 작성할 필요가 없습니다.

우리는 dev주기에서 단순/복합/테스트를 거치지 않은 것들에 대해서만 테스트를 사용합니다. 모델에 클립 클립이 부착되어 있다고 가정 해보십시오. 우리는 그것이 이미 첨부되어 있는지 테스트하지 않습니다. 이미 클립 클립 사람들이 만든 테스트가 있습니다. 모델이 첨부 파일이나 첨부 할 프로세스에 액세스 할 수 있는지 테스트합니다.

1

레일 이미 라우팅 DSL에 대한 테스트를 가지고 의미를 만드는 : 희망 같은

뭔가. 매크로의 유일한 이점은 통합 테스트 스위트를 통해 암시 적으로 테스트해야하는 경로 파일에 실제로 선언을 포함했는지 여부를 테스트한다는 것입니다.

테스트를 추가하면 유지 관리하는 데 더 많은 코드가 추가됩니다. 당신이 쓸 수있는 코드가있을 때마다 테스트의 유지/작성과 관련하여 시간이 가치가 있는지의 여부를 자문해야합니다. 그러나 테스트를 먼저 배우는 경우 테스트할만한 가치가없는 것을 배우는 데 시간이 걸리므로 엄격한 방법을 이용하는 것이 좋습니다.

희망이 있습니다.

1

what the shoulda macro actually does을 보려면 두포를 살펴 보는 것이 좋습니다. 이는 resources :products에 의해 생성 된 각 경로를 확인합니다. 즉, resources 문이 경로 파일에 있는지 단순히 확인하지는 않습니다. 그래서 이것은 실제로 테스트 된 Rails 코드를 테스트하는 인스턴스가 아닙니다.

관련 문제