web-dev-qa-db-fra.com

PHPUnit Mock les propriétés d'un objet

Je verrouille en avant un moyen de se moquer d'un objet et de remplir ses propriétés. Voici un exemple de méthode qui utilise une propriété d'un autre objet:

class MyClass {

    private $_object;

    public function methodUnderTest($object) {
        $this->_object = $object;
        return $this->_object->property
    }
}

Pour tester cette méthode à l'unité, je devrais créer une maquette de $object Avec la méthode getMockBuilder() de PHPUnit. Mais je ne peux pas trouver un moyen de se moquer des propriétés du $object, Juste des méthodes.

16
Riccardo Cedrola

Pour ajouter des propriétés à un objet simulé, il vous suffit de les définir comme vous le feriez normalement avec un objet:

$mock = $this->getMockBuilder('MyClass')
             ->disableOriginalConstructor()
             ->getMock();

$mock->property = 'some_value';

$mock->property renverra maintenant 'some_value'

Merci à akond

P.s. pour mon projet, cela ne fonctionne pas avec certaines classes, et lorsque j'essaie d'appeler $mock->property il renvoie simplement NULL

18
Riccardo Cedrola