2016-09-23 4 views
0

테스트가 외부 소스와 통신하지 않도록 할 수 있습니까? 필자는 모든 테스트가 외부 종속성을 조롱한다고 생각하지만 테스트 스위트가 타사 API와의 의도하지 않은 통신을하지 못하도록 모든 종류의 catch가 있는지 알고 싶습니다.PHPUnit 테스트를 외부 커뮤니케이션없이 내부에서 유지하는 방법?

+0

어떻게 외부 소스와 통신합니까? 당신이 guzzle (HTTP 클라이언트 라이브러리)로 포장한다면 쉽게 모의 할 수 있습니다 (도움이 필요하면 알려주세요). – Matteo

+0

이벤트/리스너/작업, 소켓, apns 푸시, aws 및 타사 API를 통해 통신하는 많은 것들이 있습니다. 위에서 언급했듯이 기본 테스트 케이스에서 필요한 모든 것을 조롱했지만 테스트 중에 외부 통신을 보장하지는 않는지 묻습니다. –

답변

1

Laravel로 태그되었으므로 Laravel을 기반으로 답변을 선호한다고 가정합니다.

외부 API와의 통신을 테스트하지 않는다고 가정하면 (어떤 시점에서해야 할 가치가있는) 외부 접근 방식과 동일한 방법으로 접근하려고합니다.

조롱.

모델과 API 라이브러리 모두 데이터 소스와 통신하고 있습니다. 모델을 테스트하기 위해 모의 실험을하므로 데이터베이스와 상호 작용하지 않습니다. API에 대해 동일한 작업을 수행하거나, 결과를 반환하는 클래스를 조롱하거나, 전체적으로 건너 뛰고 예제 응답을 던져야합니다.

모두 테스트 대상에 따라 다릅니다. API에서 데이터를 처리하는 방법을 테스트하지 않으려면 API와 상호 작용하는 항목을 호출하지 마십시오.

+0

나는 내가 아는 한 모든 것을 조롱하고 있는데, 나는 내 질문을 명확히 할 수있을 지 모르겠다.하지만 나는 아무것도 놓치지 않도록 백업을 찾고있다. –

+1

백업이 없으면 코드를 확인하기 만하면됩니다. 서버에서 외부 세계와의 연결을 제거하는 것만으로는 아무 것도 할 수 없습니다. – ollieread

+1

나는 많은 것을 알아 냈고 모든 것이 잘 조롱 된 것처럼 보였다. 나는 단지 그것이 가치가 있다고 생각했다. –