omo testar um método com dependências em PH
Eu tenho um método com alguma lógica e não sei como testá-lo. Por ser um teste de unidade para esse método específico, ele deve ser executado sem se conectar ao banco de dados. Li sobre stubs e maquetes, mas não consigo encontrar uma maneira de aplicá-los a essa situaçã
Gostaria de forçar o Client: GetClient a retornar o objeto do cliente com as propriedades corretas para que eu possa testar cada ramo lógic
class ClientType {
function GetClientType($id) {
$objClient = Client::GetClient($id);
if ($objClient->Returning == 1) {
return 'returning';
}
else {
return 'normal';
}
}
Este é o teste que eu tinha em mente
class ResourceTest extends PHPUnit_Framework_TestCase {
function testGetClientType() {
$objClientType = new ClientType();
$this->assertTrue($objClientType->GetClientType(100), 'normal');
}
}
O problema é a dependência $ objClient = Client :: GetClient ($ id); O GetClient extrairá um cliente do banco de dados, mas eu preciso substituí-lo por um Stub para que os testes de unidade funcionem sem acesso real ao banco de dado
Conclusã Se você tiver um código como o apresentado: refatore-o e use Injeção de Dependênci Se você possui código legado ou simplesmente não deseja refatorar, tente esta solução:http: //sebastian-bergmann.de/archives/885-Stubbing-Hard-Coded-Dependencies.htm