으로 내 클래스의 동작을 확인 할 수 있습니까? 예를 들어 위의 예제에서 OCMock을 사용하여 doOtherStuff가 호출되는지 확인할 수 있습니까? 나는 다음 시도했다 :그것은 그것의 자신의 방법 중 하나는 서로를 호출하는 클래스의 동작을 테스트 할 수 있습니다이 간단한 클래스</p> <pre><code>@implementation ExampleClass - (void)doStuff { [self doOtherStuff]; } - (void)doOtherStuff { // something happens here } @end </code></pre> <p>을 감안할 때 OCMock
id mock = OCMClassMock([ExampleClass class]);
[mock doStuff];
OCMVerify([mock doOtherStuff]);
을하지만 실제로 그것 때문에 클래스 모의 있다는 사실을 전혀 doStuff에 전화를 호출하지 않습니다. 이것이 부분 모의에서만 가능합니까? 그렇다면 부분 모의가 필요없는 ExampleClass의 대안 설계는 무엇이 될까요? 나를 참아주세요 - 단위 테스트 및 조롱 여기에 초보자 :
감사합니다. 그래도 문제는 - 부분적 모의가 "마귀"라는 견해와 어떻게 조화를 이루는가? 이런 종류의 인트라 클래스 테스트를 단위 테스트 세계에서 나쁜 습관으로 수행하고 있습니까? 또한 OCMock 라이브러리를 좋아하십시오! – stonedauwg
글쎄, 위에서 설명한 기술은 기본적으로 [테스트 특정 하위 클래스 패턴] (http://xunitpatterns.com/Test-Specific%20Subclass.html)의 변형입니다. 그것의 용도가 있지만 많은 사람들은 두 가지 방법이 다른 클래스에서 우수하게 끝나는 디자인을 고려합니다. 이 경우 다른 클래스를 보통의 모의 객체 (대개 의존성 주입)로 대체 할 수 있습니다. –