metoda testowania phpunit, która wywołuje inne metody klas, które wymagają makiety

Próbuję utworzyć całkiem standardowy test jednostkowy, w którym wywołuję metodę i potwierdzam jej odpowiedź, jednak metoda, którą testuję, wywołuje inną metodę wewnątrz tej samej klasy, która wykonuje trochę ciężkiego podnoszenia.

Chcę wyszydzić tę jedną metodę, ale nadal wykonuję metodę, którą testuję tak jak jest, tylko z wyszydzoną wartością zwróconą z wywołania do innej metody.

Zgłębiłem przykład, aby uczynić go tak prostym, jak to możliwe.

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;

    }

}

Moja próba napisania testów.

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

    }

}

Próbowałem kpić z obiektu MyClass, ale gdy to zrobię i wywołam testMethod, zawsze zwraca wartość null. Potrzebuję sposobu na wyśmiewanie jednej metody, ale pozostawiam resztę obiektu nietkniętą.

questionAnswers(2)

yourAnswerToTheQuestion