web-dev-qa-db-fra.com

Quelle est la différence entre createMock et getMockBuilder dans phpUnit?

Pour l'amour de ma vie, je ne peux pas comprendre la différence entre createMock($type) et getMockBuilder($type)

Je suis en train de parcourir la documentation originale et il n'y a qu'un seul liner que je n'ai pas compris.

... vous pouvez utiliser la méthode getMockBuilder ($ type) pour personnaliser la double génération de test à l'aide d'une interface fluide.

Si vous pouvez me donner un exemple, je vous en serais reconnaissant. Merci.

19

Depuis le manuel https://phpunit.de/manual/current/en/test-doubles.html

Les méthodes createMock ($ type) et getMockBuilder ($ type) fournies par PHPUnit peuvent être utilisées dans un test pour générer automatiquement un objet pouvant servir de double test pour le type d'origine spécifié (nom d'interface ou de classe). Ce double objet de test peut être utilisé dans tous les contextes où un objet du type d'origine est attendu ou requis.

La méthode createMock ($ type) renvoie immédiatement un double objet de test pour le type spécifié (interface ou classe). La création de ce double de test est effectuée à l'aide des valeurs par défaut des meilleures pratiques (les méthodes __construct () et __clone () de la classe d'origine ne sont pas exécutées et les arguments passés à une méthode du double de test ne seront pas clonés.

Si ces valeurs par défaut ne sont pas ce dont vous avez besoin, vous pouvez utiliser la méthode getMockBuilder ($ type) pour personnaliser la double génération de test à l'aide d'une interface fluide.

Ce sont déjà de nombreuses réponses sur le débordement de pile, ce sont des interfaces fluides.

10
Pawel Dubiel

createMock ($ type) utilise getMockBuilder() en interne:

protected function createMock($originalClassName)
{
    return $this->getMockBuilder($originalClassName)
                ->disableOriginalConstructor()
                ->disableOriginalClone()
                ->disableArgumentCloning()
                ->disallowMockingUnknownTypes()
                ->getMock();
}

Ainsi, la méthode createMock() vous renverra une maquette construite avec les valeurs par défaut des meilleures pratiques générales.

Mais avec getMockBuilder ($ type), vous pouvez créer une maquette avec vos propres exigences.

40
Gautam Rai