2014-11-06 4 views
1

mocked 클래스/메소드의 실제 반환 값을 얻으려면 어떻게해야합니까? 나는 고정 된 값을 반환하는 많은 가능성을 발견,하지만 난 조롱 방법의 결과가 내가 어떻게 실제 반환 값을 얻는 방법 : .... 실망 아무것도 찾지 못했습니다PHPUnit 조롱 된 메소드의 REAL 반환 값을 얻는 방법은 무엇입니까?

 

    namespace Updater\Model; 

    class TestClass 
    { 
     public function testFunction(){ 
      return 12345; 
     } 
    } 

 

    class DatabaseTest extends PHPUnit_Framework_TestCase 
    { 

     public function testMock(){ 
       $mock = $this->getMock('Updater\Model\TestClass', array('testFunction')); 
       $mock->expects($this->once())->method('testFunction') 

       // Call the Funciton.... here i would like to get the value 12345 
       $result = $mock->testFunction(); 
     } 
    } 

를 호출합니다

+0

변경되지 않은 테스트 결과를 얻기 위해 메서드를 조롱하면 다른 반환 값을 사용하여 코드 동작을 테스트 할 수 있습니다. 메서드가 반환하는 것으로 작업하고 싶다면 모의 메서드가 아니라 메서드를 호출하면됩니다. –

답변

2

AFAIK 당신은 PHPUnit 네이티브 mock으로 할 수 없습니다. passthru() 방법

http://docs.mockery.io/en/latest/reference/expectations.html

보기 : 그렇게 할 수 조롱이라는 조롱하는 라이브러리가있다.

그렇다면 실제 방법을 모의 (mock)에서 호출해야 할 필요는 거의 없습니다. 진짜 사건을 설명 할 수 있니? 메소드를 모의 해 자신의 행동 (반환 값, 예외 발생 등)을 제어 할 수 있습니다.

1

PHPunit에서 할 수 있습니다. 여기 내 예. getMock 메쏘드를보십시오. 모의하려는 메쏘드를 지정해야합니다.

<?php 


namespace Acme\DemoBundle\Tests; 

class TestClass 
{ 
    public function testFunction(){ 
     return 12345; 
    } 

    public function iWantToMockThis() 
    { 
     return 'mockME!'; 
    } 
} 

class DatabaseTest extends \PHPUnit_Framework_TestCase 
{ 

    public function testMock(){ 
     $mock = $this->getMock('Acme\DemoBundle\Tests\TestClass', array('iWantToMockThis')); 
     $mock->expects($this->once()) 
      ->method('iWantToMockThis') 
      ->willReturn("Mocked!"); 

     // The Real value 
     $this->assertEquals(12345,$mock->testFunction()); 
     // The mocked value 
     $this->assertEquals("Mocked!",$mock->iWantToMockThis()); 

     } 
} 

희망 도움말.

+0

그는 조롱 된 방법 – gontrollez

+0

@ gontrollez에서 실제 가치를 얻고 싶습니다. 방법을 모의하거나하지 않으면 다양한 테스트 시나리오에서 사용할 수 있습니다. 나는 너의 반응 덕분에 조롱 거리를보고 조롱하는 도서관에 감사한다. 나는 그것을 최대한 빨리 사용할 수 있기를 바란다 !!!! (그리고 +1) – Matteo

관련 문제