Programing

Ruby on Rails로 TDD를 시작하는 방법은 무엇입니까?

lottogame 2020. 5. 28. 07:52
반응형

Ruby on Rails로 TDD를 시작하는 방법은 무엇입니까? [닫은]


나는 개념을 잘 알고 있지만 (대학에서 시험 수업을 들었다), "실제"TDD 프로젝트를 수행 한 적이 없기 때문에 실제로 어떻게 사용하는지 잘 모르겠습니다.

Ruby on Rails (대부분 2.3 사용)를 사용하여 프로젝트 개발을 시작하려고합니다. 이 응용 프로그램은 데이터, 사용자 및 일부 파일을 관리하는 데 사용됩니다. 처음에는 너무 복잡하지는 않지만 향후 6 개월 내에 확장이 커질 수 있으므로 TDD에 더 많은 시간을 투자 할 수 있다고 생각합니다.

나는 그것을하는 방법에 대한 기본 아이디어를 가지고 있지만 여전히 몇 가지 조언과 조언이 필요합니다.

  • 어떤 Ruby on Rails TDD 101 기사를 읽어야합니까?

  • 무엇을 테스트해야합니까?

  • 어떤 보석 / 플러그인을 사용해야합니까?

  • rspec을 사용해야합니까 ? 다른 것?

  • 모든 테스트 수업을받은 후에는 어떻게 진행하고 배포합니까? (예 : 지속적인 통합)

  • TDD에 시간이 얼마나 걸리나요?

  • 이것에 관한 책을 읽어야합니까, 아니면 책을 가지고 놀거나 온라인 자습서를 읽음으로써 모든 것을 얻을 수 있습니까? 책을 읽어야한다면 어떤 책입니까?


나는 예제를 배우는 것을 좋아하기 때문에 누군가가 내가 어떻게이 문제를 해결하기 위해 TDD 접근법을 취할 것인지 말해 줄 수 있습니까?

회사가 있습니다. 연락처가 있습니다. 한 회사에 연락처를 연결할 수 있습니다. 회사는 여러 연락처를 가질 수 있습니다. 연락처, 회사를 만들고 연락처를 회사에 연결하는 방법을 만들고 싶습니다.

답 에이 예제를 사용할 필요는 없지만 도움이 될 것입니다. :)


어떤 Ruby on Rails TDD 101 기사를 읽어야합니까?

레일 애플리케이션 테스트 가이드로 시작하겠습니다 .

또한 Railscast 에는 다양한 테스트 도구를 사용하는 방법에 대한 훌륭한 스크린 캐스트가 있습니다.

무엇을 테스트해야합니까?

테스트하기 쉽기 때문에 모델부터 시작하겠습니다. 간단한 규칙은 테스트의 모든 if 문을 포함해야한다는 것입니다.

모든 엣지 케이스뿐만 아니라 메소드의 목적 (방법이 예상대로 작동하는지 확인)을 테스트해야합니다.

또한 테스트를 끝내지 않도록하십시오.

어떤 보석 / 플러그인을 사용해야합니까? rspec을 사용해야합니까? 다른 것?

시작할 때을 사용하십시오 Test Unit. 기본 사항에 익숙해 rspec지거나 사용 cucumber하면됩니다.

Autotest당신이 진정으로 테스트 주도되고 싶다면 좋은 도구입니다. 그러나 '좋은 것'은 필요하지 않습니다.

모든 테스트 수업을받은 후에는 어떻게 진행하고 배포합니까?

질문이 확실하지 않습니다. 일반적으로 테스트를 배포하지 않습니다. 모든 테스트 클래스를 갖추면 간단한 테스트 'rake test'를 입력하여 모든 테스트를 실행하십시오.

TDD에 시간이 얼마나 걸리나요?

정말 시간이 절약됩니다. 당신이 미로 퍼즐을 좋아한다면, 당신은 거의 처음부터 끝까지 그것을 해결하는 것이 항상 쉽다는 것을 알고 있습니다. TDD와 동일합니다. Test Driven 없이는 '다음에해야 할 일'을 꾸준히 생각하고 있습니다. Test Driven을 사용하면 다음에 수행 할 작업이 테스트에 표시됩니다 (논리가 없으면 중단되므로 깨진 부분 만 수정하면 됨). 또한 버그가 적어 장기적으로 많은 시간을 절약 할 수 있습니다.

이것에 관한 책을 읽어야합니까, 아니면 책을 가지고 놀거나 온라인 자습서를 읽음으로써 모든 것을 얻을 수 있습니까? 책을 읽어야한다면 어떤 책입니까?

책이 필요 없습니다. 무엇이든 배우는 가장 효율적인 방법은 바로 그렇게하는 것입니다. 질문이나 문제가 발생하면 책이나 온라인 자료로 돌아가십시오. 이것도 민첩합니다.

예를 들어 테스트해야 할 사항은 다음과 같습니다. 연락처는 한 회사에 연결될 수 있고, 회사는 여러 연락처를 가질 수 있으며, 연락처를 작성하는 방법을 작성하고, 연락처를 회사에 연결합니다.

class CompanyTest <Test::Unit
    def test_relationship # test associations/relationships
        c = companies(:some_company)
        assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
    end
end

class ContactTest<Test::Unit
   def  test_relationships
        c = contact(:some_contact)
        assert_equal some_company, c.company # make sure the contact link to 1 company
   end

   def  test_create/add
        # test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
   end
end

2010 년 여름 샌프란시스코에서 공개 수업으로 진행된 6 에피소드 비디오 시리즈를 제작했습니다.이 자료는 RSpec 1.3을 사용한 Rails 2.3의 테스트 및 개발자 효율성을 다룹니다. 약간 날짜가 있지만 주요 개념은 Rspec 2.x를 사용하는 Rails 3에 적용됩니다.

http://www.rubyfocus.biz/class_video/2010/07/19/rails_tdd_class_1.html


I recommend this book: Ruby on Rails Tutorial. I'm almost done with it. The book uses TDD the whole book. Give it a try!


I recommend this book: Agile Web Development with Rails


TDD is all about writing tests first. This basically forces you to write your own client before you write your application code. The cycle is generally write a test for an API that doesn't exist, run the test expecting it to fail, go write your API code, run your test again and make sure it passes. Then write your next test... and so on.

You might also be interested in this Rails guide.


I use :

  1. Shoulda and rspec for testing
  2. Mocha for mocking
  3. Factory_girl for factories
  4. parallel_specs for faster testing
  5. metric_fu for code analysis

What gem/plugin should I use?

I've always enjoyed shoulda.

How time consuming TDD really is?

The reason I've always favored TDD development is that it focuses how I will implement a specific piece of code. I have an anecdotal feeling that whenever I adhere more strongly to TDD principles I spend less time reworking later. The amount of time spent is all in how well you write unit tests though. If the unit tests don't capture the expected behavior, all the time spent on them is wasted.

참고URL : https://stackoverflow.com/questions/1386562/how-to-get-started-on-tdd-with-ruby-on-rails

반응형