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.