Метод тестирования phpunit, который вызывает другие методы класса, которые нуждаются в макете

я пытаюсь создать довольно стандартный модульный тест, где я вызываю метод и утверждаю егоответ, однако метод Im Testing вызывает другой метод внутри того же класса, который делает немного тяжелой работы.

Я хочу издеваться над этим одним методом, но все же выполнить метод, который яm проверяется как есть, только с проверенным значением, возвращаемым при вызове другого метода.

Приведем пример, чтобы сделать его максимально простым.

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;

    }

}

Моя попытка написания тестов.

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

    }

}

Я попытался смоделировать объект MyClass, но когда я делаю это и вызываю testMethod, он всегда возвращает ноль. Мне нужен способ издеваться над одним методом, но оставьте остальную часть объекта нетронутой.

Ответы на вопрос(2)

Ваш ответ на вопрос