GO에는 다른 언어 (예 : Java 용 Mockito)와 같은 내장 조롱 프레임 워크가 없습니다. 그러나 인터페이스와 스트러크를 사용하여 모의와 스터브를 효과적으로 만들 수 있습니다. 키는 코드가 상호 작용하는 종속성을 나타내는 인터페이스를 정의하는 것입니다. 그런 다음 실제 코드에 대한 구체적인 구현 및 테스트를위한 별도의 모의 구현을 만듭니다.
예를 들어 설명하자면 : 데이터베이스와 상호 작용하는 함수가 있다고 상상해 보겠습니다 :
<code class="go"> 유형 데이터베이스 인터페이스 {getData (id int) (문자열, 오류) {realdatabase struct {// realaBase struct {intaBase intliat} intaBase struct} *realDatabase (id int) (id int) (string, error) {// ... 실제 데이터베이스 상호 작용 ... "데이터베이스"에서 데이터를 꺼내기 & quot; nil} func processData (db database, id int) (string, error) {data, err : nil {retud} / quot; & quot; 데이터, nil} </code>
이제 모의를 만들어 봅시다 :
<pre class="brush:php;toolbar:false"> <code class="go"> mockdatabase struct {getDatafunc func (int) (string, error)} func (m *mockdatabase) getData (id int) (String, error) {if m.getafunc! = niL {iD). } return & quot;, nil // 또는 기본값/error} </code>
테스트에서 mockdatabase
를 사용하여 getData
의 반환 값을 제어하여 getData = "go"> funccdb : = {mockdb : =. & amp; mockdatabase {getDatafunc : func (id int) (string, error) {if id == 1 {return & quot; test data & quot; nil} return & quot;, errors.new ( "데이터를 찾지 못한다}}}, err : = erver (mockdb, 1)는 Assert.noerer (t, error (t,) & quot; processed : test data & quot;, 결과) 결과, err = processData (mockdb, 2) assert.error (t, err)}
이 예제는 간단한 모의를 보여줍니다. 스텁은 훨씬 간단합니다. 그들은 일반적으로 모의 함수 내에서 복잡한 논리없이 사전 정의 된 값을 반환합니다.
mockdatabase
, mockgetData
). 여러 계층의 종속성을 조롱하는 것을 발견하면 설계 결함이 나타날 수 있습니다. 더 나은 테스트 가능성을 위해 코드를 리팩토링하는 것을 고려하십시오. 증언/assert
테스트에서 어설 션 작성을 훨씬 깨끗하고 읽기 쉬운 것입니다. 위의 processData
예제에서, Mock mockdatabase
분리 된 processData
는 실제 데이터베이스입니다. 테스트는 데이터베이스의 상태 또는 가용성에 관계없이 processData
의 동작을 확인할 수 있습니다. 이 격리는 신뢰할 수 있고 반복 가능한 단위 테스트를 작성하는 데 중요합니다.
전용 조롱 프레임 워크를 제공하지는 않지만, 여러 제 3 자 라이브러리는 프로세스를 단순화하는 데 도움이 될 수 있습니다. 모의 생성을위한 코드 생성 접근법을 제공하는 인기있는 라이브러리입니다. 그것은 당신의 인터페이스를 기반으로 모의 스트러크와 방법의 생성을 자동화하여 보일러 플레이트 코드를 줄일 수 있습니다.
Gomock> :
또 다른 강력한 콘텐츠, gomock
는보다 강력하고 유연한 모킹 솔루션을 제공합니다. 기대 설정 및 검증을 포함하여보다 고급 조롱 시나리오를 허용합니다. 그러나 좀 더 설정이 필요합니다. 이러한 라이브러리 중에서 선택하는 것은 종종 프로젝트 복잡성과 선호도에 달려 있습니다. 더 간단한 프로젝트의 경우 수동으로 조롱을 만드는 것으로 충분할 수 있습니다. 대규모 프로젝트 또는 복잡한 조롱 요구 사항의 경우 <code> 증언/모의> 또는 <code> Gomock
는 효율성을 크게 향상시키고 보일러 플레이트를 줄일 수 있습니다.
위 내용은 이동 중에 테스트를 위해 모의 개체와 스터브를 작성하려면 어떻게합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!