Метод тестирования 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, он всегда возвращает ноль. Мне нужен способ издеваться над одним методом, но оставьте остальную часть объекта нетронутой.