PHPUNIT:이중 테스트 설명(Dummy,Stub,Mock)
설명
이 기사는 Dummy, Stub 및 Mock을 구별하는 데 도움이 됩니다.
테스트 더블
종종 단위 테스트에서 우리는 종종 클래스를 테스트하게 됩니다.
종속성이 없는 클래스는 테스트하기 쉽지만 종속성이 있으면 훨씬 더 복잡해집니다.
모든 종속성을 가진 클래스를 테스트할 수 있지만 매우 복잡할 수 있습니다. 최상의 솔루션은 모든 종속성에서 격리하는 것입니다.
라이너가 들어올 때입니다.
예를 들어 배우가 촬영하는 동안 자주 배우에게 요구하는 스턴트를 수행하기 위해 언더 스터디가 필요합니다. 이는 프로그래밍에서 더블링에 대해 정확히 동일한 원칙입니다.
라이너의 문제는 일반적으로 라이너를 식별하는 방법을 모른다는 것입니다.
모의, 스텁 또는 더미를 사용합니까?
그러나 차이점은 무엇입니까?
목, 스텁 또는 더미의 차이점을 설명하기 위해 먼저 정의를 살펴보겠습니다.
더미란 무엇입니까?
더미는 종속 개체를 인스턴스화해야 할 때 사용할 수 있는 빈 클래스입니다.
그것은 우리가 테스트하려는 클래스에 클래스가 존재한다고 믿게 만드는 것을 목표로 합니다.
일반적으로 매개변수로 전달되지만 호출되지는 않습니다.
호출되면 해당 함수는 항상 null을 반환합니다.
$client = $this->getMock('GuzzleHttp\Client');
스텁이란 무엇입니까?
스텁은 사용자 정의할 수 있는 더미입니다.
그것은 우리가 기대하는 것과 일치할 것입니다.
그는 자신의 방법을 재정의하고 무엇을 반환할지 알려줄 수 있습니다.
$stub = $this->createMock(Stubclass::class)
->method('someStubMethod')
->willReturn('foo');
$someClass->someMethod($stub);
모의란 무엇입니까?
모의는 기대치를 확인하는 복제본입니다.
메서드가 x번 호출되는지 확인하도록 만들 수 있습니다.
시뮬레이션이 예상한 횟수만큼 수행되지 않으면 테스트가 실패합니다.
Stub과 달리 Mock은 올바른 호출을 받지 못하면 예외를 던질 수 있습니다.
모의 객체의 목적은 반환 값에 관심을 두는 것이 아니라 호출되는 메서드에 관심을 갖고 몇 번이고 어떤 인수를 사용하는지 파악하는 것입니다.
The execution will be launched once
$mock = $this->createMock(Mockclass::class)
// Once() one time
->expects($this->once())
->methods('someMockMethod')
->willReturn('foo');
$someClass->someMethod($mock);
The execution will never be launched
$mock = $this->createMock(Mockclass::class)
->expects($this->never())
->methods('someMockMethod')
->willReturn('foo');
$someClass->someMethod($mock);
결론
이제 더 이상 Mock, Stub 및 Dummy를 혼동하지 않습니다.
이제 더 명확하게 볼 수 있습니다 !!
Reference
이 문제에 관하여(PHPUNIT:이중 테스트 설명(Dummy,Stub,Mock)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ainamasylvain/demystifying-the-double-test-dummy-stub-mock-4ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
종종 단위 테스트에서 우리는 종종 클래스를 테스트하게 됩니다.
종속성이 없는 클래스는 테스트하기 쉽지만 종속성이 있으면 훨씬 더 복잡해집니다.
모든 종속성을 가진 클래스를 테스트할 수 있지만 매우 복잡할 수 있습니다. 최상의 솔루션은 모든 종속성에서 격리하는 것입니다.
라이너가 들어올 때입니다.
예를 들어 배우가 촬영하는 동안 자주 배우에게 요구하는 스턴트를 수행하기 위해 언더 스터디가 필요합니다. 이는 프로그래밍에서 더블링에 대해 정확히 동일한 원칙입니다.
라이너의 문제는 일반적으로 라이너를 식별하는 방법을 모른다는 것입니다.
모의, 스텁 또는 더미를 사용합니까?
그러나 차이점은 무엇입니까?
목, 스텁 또는 더미의 차이점을 설명하기 위해 먼저 정의를 살펴보겠습니다.
더미란 무엇입니까?
더미는 종속 개체를 인스턴스화해야 할 때 사용할 수 있는 빈 클래스입니다.
그것은 우리가 테스트하려는 클래스에 클래스가 존재한다고 믿게 만드는 것을 목표로 합니다.
일반적으로 매개변수로 전달되지만 호출되지는 않습니다.
호출되면 해당 함수는 항상 null을 반환합니다.
$client = $this->getMock('GuzzleHttp\Client');
스텁이란 무엇입니까?
스텁은 사용자 정의할 수 있는 더미입니다.
그것은 우리가 기대하는 것과 일치할 것입니다.
그는 자신의 방법을 재정의하고 무엇을 반환할지 알려줄 수 있습니다.
$stub = $this->createMock(Stubclass::class)
->method('someStubMethod')
->willReturn('foo');
$someClass->someMethod($stub);
모의란 무엇입니까?
모의는 기대치를 확인하는 복제본입니다.
메서드가 x번 호출되는지 확인하도록 만들 수 있습니다.
시뮬레이션이 예상한 횟수만큼 수행되지 않으면 테스트가 실패합니다.
Stub과 달리 Mock은 올바른 호출을 받지 못하면 예외를 던질 수 있습니다.
모의 객체의 목적은 반환 값에 관심을 두는 것이 아니라 호출되는 메서드에 관심을 갖고 몇 번이고 어떤 인수를 사용하는지 파악하는 것입니다.
The execution will be launched once
$mock = $this->createMock(Mockclass::class)
// Once() one time
->expects($this->once())
->methods('someMockMethod')
->willReturn('foo');
$someClass->someMethod($mock);
The execution will never be launched
$mock = $this->createMock(Mockclass::class)
->expects($this->never())
->methods('someMockMethod')
->willReturn('foo');
$someClass->someMethod($mock);
결론
이제 더 이상 Mock, Stub 및 Dummy를 혼동하지 않습니다.
이제 더 명확하게 볼 수 있습니다 !!
Reference
이 문제에 관하여(PHPUNIT:이중 테스트 설명(Dummy,Stub,Mock)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ainamasylvain/demystifying-the-double-test-dummy-stub-mock-4ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$client = $this->getMock('GuzzleHttp\Client');
$stub = $this->createMock(Stubclass::class)
->method('someStubMethod')
->willReturn('foo');
$someClass->someMethod($stub);
The execution will be launched once
$mock = $this->createMock(Mockclass::class)
// Once() one time
->expects($this->once())
->methods('someMockMethod')
->willReturn('foo');
$someClass->someMethod($mock);
The execution will never be launched
$mock = $this->createMock(Mockclass::class)
->expects($this->never())
->methods('someMockMethod')
->willReturn('foo');
$someClass->someMethod($mock);
이제 더 이상 Mock, Stub 및 Dummy를 혼동하지 않습니다.
이제 더 명확하게 볼 수 있습니다 !!
Reference
이 문제에 관하여(PHPUNIT:이중 테스트 설명(Dummy,Stub,Mock)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ainamasylvain/demystifying-the-double-test-dummy-stub-mock-4ae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)