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

questionAnswers(2)

yourAnswerToTheQuestion