RSPec

RSpec
RSPec
개발자데이비드 첼림스키, 마이런 마스턴, 앤디 린데먼, 존 로, 폴 카사레토, 샘 피펜, 브래들리 섀퍼[1]
초기 릴리즈2007년 5월 18일, 15년 전(2007-05-18)[2]
안정된 릴리스
3.10.0[3] / 2020년 10월 30일; 21개월 전 (2020년 10월 30일)
저장소
운영 체제크로스 플랫폼
유형행동 중심 개발 프레임워크 / 테스트 도구
면허증.MIT 라이선스
웹 사이트rspec.info

RSpec은 루비 [4]코드를 테스트하기 위해 프로그래밍 언어로 작성된 컴퓨터 도메인 고유 언어(DSL)(특정 응용 프로그램 도메인) 테스트 도구입니다.프로덕션 애플리케이션에서 광범위하게 사용되는 동작 중심 개발(BDD) 프레임워크입니다.이 개념의 배후에 있는 기본 개념은 테스트 주도 개발(TDD)입니다.테스트는 먼저 작성되고 개발은 테스트를 완료하고 리팩터링을 수행할 수 있는 충분한 코드만 작성하는 것에 기초합니다.JMock [5]기반의 프레임워크에 완전히 통합된 자체적인 조롱 프레임워크가 포함되어 있습니다.RSpec 구문이 단순하기 때문에 Ruby 어플리케이션에서 자주 사용되는 테스트 도구 중 하나입니다.RSpec 툴은, 다음의 인스톨에 의해서 사용할 수 있습니다.rspec 개의 다른 보석으로 이루어진 보석, 즉rspec-core,rspec-expectation그리고.rspec-mock.[4]

역사

RSpec은 2005년 스티븐 베이커와 그의 팀원 Dave Astels, Aslak Hellesöy 및 David Celimsky에 의해 실험으로 시작되었습니다.Chelimsky는 Ruby on Rails와의 통합을 촉진하는 RSpec-Rails 개발을 담당했습니다.초기 릴리즈, 즉RSpec 1.0은 2007년 5월에 출시되었으며, 최신 릴리즈에도 포함되어 있는 RSpec의 많은 주요 기능을 포함하고 있습니다.그러나 테스트 속도 등의 기술적인 문제로 인해 이후 단종되었습니다.RSpec의 세 번째 버전인 RSpec 3은 2014년 7월에 출시되었으며, 검증 더블, 컴포지터블 매처많은 새로운 기능을 갖추고 있습니다.

사용.

객체의 동작 설명

위에서 설명한 바와 같이 RSpec은 오브젝트의 동작을 기술하는 도메인 고유의 언어를 제공합니다.RSpec에서 사용되는 키워드는 다른 언어 [6]및/또는 TDD 프레임워크에서 사용되는 키워드와 유사합니다.예를 들어, 테스트에서 사용되는 키워드가 다음과 같습니다.유닛은 다음과 같이 RSpec 키워드에 매핑할 수 있습니다.

  • 어설션이 기대치가 되다
  • 테스트 방법이 샘플 코드가 되다
  • 테스트 케이스가 샘플 그룹이 되다

이러한 키워드는, 같은 콘텍스트로 사용되고 있습니다만, 같은 이름으로 사용되고 있습니다.RSpec의 구문은 읽기 쉽고 코드의 동작을 기술하여 프로그래머에게 자유를 제공합니다.모든 테스트 프레임워크는 다음과 같은 흐름에서 작동하며, 어떤 상황에서 어떤 이벤트가 발생했을 때 어떤 결과가 예상되는지 알 수 있습니다.description(), context() 및 it() 등의 메서드는 각각 테스트코드의 유추와 골격을 형성합니다.

기술()

descript() 메서드는 클래스, 메서드 또는 예시 그룹을 기술하기 위해 사용됩니다.이것은 테스트 코드를 실제로 포함하는 외부 블록으로, 그 안에 포함된 코드의 특성을 나타냅니다.이 메서드는 다수의 인수와 옵션블록을 [6]사용합니다.단, 보통 1개 또는2개의 인수가 예시 그룹의 동작을 기술하기 위해 사용됩니다.첫 번째 인수는 클래스 또는 모듈에 대한 참조를 나타내며 두 번째 인수는 데이터 유형이 [6]String인 옵션입니다.예제 그룹도 중첩할 수 있습니다.descript 메서드의 사용 예는 다음과 같습니다.[6]

묘사하라 사용자, "계정 잔고 없음" {....} => 사용자 와 함께 아니요. 계좌 균형. 

[6]

context()

context() 블록은 descript 블록에서 언급된 클래스 또는 메서드가 사용되는 컨텍스트를 기술하기 위해 사용됩니다.이 시나리오에서는 description()이라는 단어의 에일리어스로 간주할 수 있으며, 둘 다 서로 교환하여 사용할 수 있습니다.일반적으로 descript()는 물건에 사용되며 context()는 컨텍스트에 사용됩니다.다양한 시나리오에서 다양한 결과를 도출하는 데 도움이 됩니다.위의 예는 [6]context() 메서드를 사용하여 다음과 같이 설명할 수 있습니다.

묘사하라 사용자 하다   맥락 "계정 잔액이 없습니다." 하다     ....   끝. 끝. 

[6] context()를 사용하면 스펙파일을 스캔하기 쉬워지고, 그 파일의 관련성을 명확하게 할 수 있습니다.

it()

이는 콘텍스트에서 샘플의 사양을 설명하는 RSpec 방식입니다.it() block은 인수로 문자열을 사용하며, 'it' 키워드 뒤의 문자열은 블록이 수행할 것으로 예상되는 함수로 간주할 수 있습니다.즉, 테스트 케이스로 간주할 수 있습니다.다음 [6]예를 생각해 보겠습니다.

묘사하라 사용자 하다   맥락 "계정 잔액이 없습니다." 하다     그것 "주택 대출을 승인할 수 없다" 하다       놓다 계좌 잔액이 없어 대출이 허가되지 않는다.     끝.   끝. 끝. 

[6]

RSpec:: 예상

RSpec에서 expection은 코드 예제의 실행 중 특정 시점에서 어떤 것이 있을 것으로 예상되는 상태를 나타내는 문장입니다.RSpec은 기대치를 나타내기 위해 should() 및 should_not()과 같은 단순한 프레임워크와 키워드를 사용합니다.일반적인 조작과 일반적이지 않은 표현에 대해 예상되는 결과와 일치하려고 하는 객체인 매처를 지원합니다.예를 들어, 결과의 예상 결과가 숫자 값 5라고 한다면, 이와 동일한 측정치를 사용하는 RSpec 기대치는 [6]다음과 같이 작성될 것이다.

result.should equal(5)

RSpec:: 모크

RSpec은 RSpec이라는 이름의 라이브러리를 제공합니다.역할과 인터페이스 검출에 초점을 맞추는 테스트의 2배를 작성하기 위해 Mocks는 대부분의 경우 구현된 의존관계 없이 진행되기 때문에 커플링 [6]비결정론으로부터 격리됩니다.

도구 및 통합

RSpec에는 다음과 같은 많은 툴이 있습니다.

또한 RSpec은 도메인 고유의 요구를 충족시키기 위해 RSpec 확장을 지원하기 위해 많은 유틸리티와 확장 포인트를 제공합니다.예를 들어, 보고서 작성 목적으로 그룹 및 예제와 관련된 메타데이터 사용, 글로벌 구성을 사용하여 모든 예제에 전후 블록을 할당, 매크로 사용 등입니다.

기타 루비 테스트 도구

레퍼런스

  1. ^ RSpec 핵심2013년 4월 8일 취득.
  2. ^ "all versions of rspec". rubygems.org. Retrieved 11 February 2014.
  3. ^ "Release 3.10.0". 30 October 2020. Retrieved 15 November 2020.
  4. ^ a b "Introduction to RSpec The Odin Project". www.theodinproject.com. Retrieved 2017-02-18.
  5. ^ "jMock - An Expressive Mock Object Library for Java". www.jmock.org. Retrieved 2017-02-18.
  6. ^ a b c d e f g h i j k "The RSpec Book: Behaviour-Driven Development with RSpec, Cucumber, and Friends by David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, Dan North The Pragmatic Bookshelf". pragprog.com. Retrieved 2017-02-11.


추가 정보

1. RSpec 시작하기: (설치 절차) http://rspec.info/

2. 벡, K. (2014년)를 들어 테스트 주도의 개발.보스턴:애디슨 웨슬리.

외부 링크