método de prueba phpunit que llama a otros métodos de clase que necesitan simulacro

Estoy tratando de crear una prueba unitaria bastante estándar en la que llamo a un método y afirmo su respuesta, sin embargo, el método que estoy probando llama a otro método dentro de la misma clase que hace un poco de trabajo pesado.

Quiero burlarme de ese método pero seguir ejecutando el método que estoy probando tal como está, solo con el valor simulado devuelto desde la llamada al otro método.

He silenciado el ejemplo para hacerlo lo más simple posible.

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;

    }

}

Mi intento de escribir las pruebas.

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);

    }

}

He intentado burlarme del objeto MyClass, pero cuando lo hago y llamo a testMethod, siempre devuelve un valor nulo. Necesito una forma de burlarme de un método, pero dejar el resto del objeto intacto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta