2011-10-09 3 views
0

지난 며칠 동안 나는 의존성 주입에 대해 많이 읽었습니다. 이제 phpunit 기술을 업그레이드하려고 시도 했으므로이 DI를 구현하는 방법을 생각하고있었습니다. 내 단위 테스트에서.(PHP) 의존성 주입 (DI)을 이용한 단위 테스트

class Event{ 
} 

class Shift{ 
    public function __construct(Event $e) 
    { 
     (...) 
    } 
} 

내가 본질적으로 DI를 이해하는 방법이를 :

내가 두 개체가 말한다.

class ShiftTest extends 
    \ModelTestCase 
{ 
    public function testCanCreateShift() 
    { 
     $e = new \Js\Entity\Event(); 
     $this->assertInstanceOf('JS\Entity\Shift', new \JS\Entity\Shift($e)); 
    } 
} 

을하지만 지금은 여기에 이벤트 객체를 정의 할 그나마 : 지금 내 이동 생성자에 대한 테스트를 작성하고자합니다. 그렇다면 phpUnit에서 이벤트 객체를 만드는 방법은 무엇입니까?

+1

* (참고) * http://www.phpunit.de/manual/current/en/test-doubles.html – Gordon

답변

2

이것은 mocks, stubs입니다. 등이 사용됩니다. SUT (테스트중인 시스템)를 만들고 모든 종속성을 조롱합니다. 처음에는 DI 없이는이 작업을 수행 할 수 없습니다.

+0

하지만 스텁이나 가짜를 사용해야합니까? – sanders

+3

가장 큰 차이점은 스텁 테스트 상태 (즉, x를 수행 한 후 y 상태가 z가 됨)이고 mocks 테스트 동작 (즉, x, y가 발생하면 동작)입니다. 다음은 주제에 대한 강력한 기사입니다. http://martinfowler.com/articles/mocksArentStubs.html – blockhead

관련 문제