2009-10-19 4 views
7

새로운 응용 프로그램의 경우 BDD에서 도핑을 시작하고 RSpec 또는 Thoughtbot의 Shoulda를 사용할지 여부를 결정하려고합니다. 나는 Shoulda가 사용하는 매크로와 Ruby/Rails가 테스트하는 방식을 재창조하지는 않지만 단순히 애드온 (add-on)을 제공한다는 사실을 좋아합니다. 다른 한편으로, 매크로는 당신이 테스트하고있는 것에 대해 명시 적으로 표현하는 것보다 너무 많은 "마술"처럼 보입니다. (그러나 나는 xxx없이 "xxx없이 유효해야합니다"2 개의 라이너를 쓰는 것은 짜증 스럽다는 것을 알고 있습니다. 모델). 솔직히 말해서 모델에 대한 사양/테스트를 쉽게 찾을 수 있고 거의 지루할 정도로 쉽게 할 수 있지만 필자는 정확히 무엇을 테스트해야하는지, 어떻게 작성해야하는지 정확히 알지 못하기 때문에 컨트롤러에 대해 매우 어렵게 쓰고있다.BDD on Rails - 커뮤니티가 Shoulda 또는 RSpec보다 더 뒤떨어져 있습니까?

나는 그들이 당신에게 거짓 가정을한다고 생각하기 때문에 조롱과 스터 빙의 주제에 대해 iffy입니다. (당신이 필요로하는 데이터가 무엇이든 그것을 생각한다고 말할 수 있기 때문에 또는 방법 X가 호출 된 것처럼 가장합니다) 그 RSpec은 그 둘을 많이 사용합니다. 나는 RSPec이 생산하는 문서를 좋아하지만 판매용 응용 프로그램을 만들고 클라이언트에게 제공하지 않기 때문에 예쁜 문서가 그렇게 유용하지는 않습니다. 나는 오이가 좋아하지만 과잉이라고 생각한다. (예, 나는 그것을 Shoulda와 함께 사용할 수있다.)

이 시점에서 RSpec 또는 Shoulda를 선호하는 레일스 커뮤니티가 있습니까?

답변

2

레일 커뮤니티는 RSpec과 Shoulda 모두에 유리합니다. 그것은 개발자에 달려 있습니다. 당신이 선호하는 경우, 그것을 사용하십시오.
RSpec을 선호한다면 그것을 사용하십시오;)

그들은 둘 다 비슷한 목적을 가진 다른 라이브러리입니다. 그것은 모든 개발자가 그것을 위해 또는 반대해야한다는 것을 의미하지는 않습니다. 그 중 하나만 사용할 수 있음을 의미합니다.

환경 설정 (및 작업중인 다른 개발자)에 따라 선택의 여지가 있습니다. 모의 객체와 스텁 (와 가짜, 복식 및 기타 등등)에 관한

3

- 당신이 TDD 또는 사실 이후에, 단위 수준에서 테스트하고, 전체 는 데이터를 가지고 생각을 말하고있다 스텁을 사용하여 필요합니다. 실제 객체가 실제로 그 데이터를 생성하는지 확인하기 위해 테스트를 작성합니다. 테스트 대상 클래스의 내부 동작을 검사하는 것이지 상향 연결이 제대로 작동하는지 확인하는 것이 아닙니다. 단위 수준입니다. 은 통합 또는 기능/이야기/수용 테스트 (또는 원하는 상위 테스팅 이름의 맛)에 대한 엔드 투 엔드 동작을 테스트합니다.

mock 객체는 다운 스트림에 대한 것입니다. 테스트중인 클래스가 적절한 호출을했는지 확인하고 싶습니다. 실제로 아무 일도 일어나지 않는다고 걱정하지 않습니다. 올바른 메소드가 호출되었습니다. 올바른 주장들. 가짜는 정말 좋습니다. Rspec은 자체 조롱 프레임 워크를 가지고 있지만, MochaFlexMock도 널리 사용됩니다.

여기에서 많은 명명법에 대한 토론/설명/토론/화염 전쟁이있었습니다. 마틴 파울러 (주제에 관해 발음하는 것보다 가장 잘 평가받는 사람)는 clarify it이라는 블로그 게시물을 썼다. 여기에 another article, with a few examples이 있습니다.

0

했어야 당직자 : 758

RSpec에 당직자 : 1279.

궁극적으로, 그것은 당신이 선호하는 어느 하나를 결정 당신에게 달려 있습니다.

+1

이러한 스냅 샷 번호는 그 뒤에있는 추세를 보지 않고는 아무런 의미가 없습니다. –

0

내가 말할 수있는 한, 당신이 BDD를 언급했기 때문에, 오이와 RSpec 사이에 더 자연스러운 매치가있는 것처럼 보입니다. 내가 shoulda에 관해서 가장 좋아하는 것은 그 validation-macro 's이다. RSpec에에 그를 해결하는 두 가지 옵션이 있습니다

  1. shoulda macro's in RSpec, 좋은 옵션을 사용하여이 작고 거의 알려져 있지
  2. 사용 rspec-validations-expectations 플러그인 전에 대답하지만, 이는 단지 (쉬운 액티브 검증 테스트)를 해결합니다.

어떤 라이브러리가 가장 자연스럽지 만 (테스트가 어떻게 표현되는지) 확실히 알아야합니다. 나를 위해, 앞서 언급 한 옵션으로, 그것은 (적어도 자체적으로) shoulda 옵션을 버리는 것이 더 쉬웠으며, 나는 rspec과 오이를 갔다.

1

RSpec과 함께 Shoulda matchers를 사용합니다. 두 세계의 장점 : RSpec의 기반이되는 커다란 공동체, 신속한 개발 및 Shoulda matchers와의 많은 관련성. 테스트 도구의

0

나의 현재 스택은 다음과 같습니다 드라이버와 브라우저 시뮬레이션

  • 카피 바라 테스트를 수락

    • 스테이크 : 셀레늄 & Akephalos
    • 기계공 스텁에 대한 단위 테스트
    • 에 대한
    • RSpec에
  • 0

    많은 Rails 개발자가 세계에서 사용하고 있습니다. RSpec과 그 중 일부는 Shoulda를 사용합니다. DHH, 레일의 리드 개발자는 Test::UnitMinitest을 선호합니다. ThoughbotShoulda은 Test :: Unit (물론 Minitest)와 RSpec을 기반으로합니다.

    궁극적으로 자원 봉사자 인 Rails Hotline으로 RSpec에서 더 많은 지역 사회 지원을받을 수 있으며 특히 RSpec을 개선하기 위해 추가로 많은 보석이 있습니다. Minitest와 Test :: Unite는 Ruby의 핵심입니다.

    [설명] 순수한 단위 기능이 필요한 경우 (주로 Minitest의 벤치 마크 라이브러리가 매우 간단하기 때문에) 소프트웨어가 "동작 흐름"을 필요로한다면 RSpec을 사용하는 경향이 있습니다.