método de teste phpunit que chama outros métodos de classe que precisam simular

Eu estou tentando criar um teste de unidade bastante padrão onde eu chamo um método e afirmo sua resposta, no entanto, o método que estou testando chama outro método dentro da mesma classe que faz um pouco de trabalho pesado.

Eu quero zombar desse método, mas ainda executar o método que estou testando como está, apenas com o valor de retorno retornado da chamada para o outro método.

Eu simplifiquei o exemplo para torná-lo o mais simples possível.

class MyClass
{

    // I want to test this method, but mock the handleValue method to always return a set value.

    public function testMethod($arg)
    {

        $value = $arg->getValue();

        $this->handleValue($value);

    }


    // This method needs to be mocked to always return a set value.

    public function handleValue($value)
    {

        // Do a bunch of stuff...
        $value += 20;

        return $value;

    }

}

Minha tentativa de escrever os testes.

class MyClassTest extends \PHPUnit_Framework_TestCase
{


    public function testTheTestMethod()
    {

        // mock the object that is passed in as an arg
        $arg = $this->getMockBuilder('SomeEntity')->getMock();
        $arg->expects($this->any())
            ->method('getValue')
            ->will($this->returnValue(10));

        // test handle document()
        $myClass = new MyClass();

        $result = $myClass->testMethod($arg);

        // assert result is the correct
        $this->assertEquals($result, 50);

    }

}

Eu tentei zombar do objeto MyClass, mas quando eu faço isso e chamo o testMethod sempre retorna null. Eu preciso de uma maneira de zombar de um método, mas deixar o resto do objeto intacto.

questionAnswers(2)

yourAnswerToTheQuestion