L'extension des fonctions PHP à l'aide de Prophecy peut être réalisée en suivant ces étapes : Utilisez Composer pour installer Prophecy. Utilisez la méthode prophesize() pour créer un objet stub. Utilisez la méthode will() pour configurer le comportement de l'objet stub. Utilisez la méthode ShouldHaveBeenCalled() pour vérifier que l'objet stub a été appelé.
Prophecy est un framework stub flexible et puissant en PHP. Il vous permet de créer facilement des objets stub pouvant être utilisés à des fins de test sans réellement modifier le code testé.
Installez Prophecy
Tout d'abord, installez Prophecy à l'aide de Composer :
composer require prophecy/prophecy
Créez un objet stub
Pour créer un objet stub, utilisez la méthode prophesize()
: prophesize()
方法:
$stub = $prophecy->prophesize();
此代码将创建一个桩对象,该对象充当未指定的类或接口。
配置桩对象
接下来,您可以使用 will()
方法配置桩对象的行为。例如,要配置 getName()
方法返回 "John Doe",请使用:
$stub->getName()->willReturn('John Doe');
验证调用
要验证桩对象是否已被调用,可以使用 shouldHaveBeenCalled()
方法:
$stub->getName()->shouldHaveBeenCalled();
实战案例
假设我们有一个函数 greet()
,它接受一个名称参数并打印一条问候信息。
function greet($name) { echo "Hello, $name!"; }
我们可以使用 Prophecy 创建一个桩对象来测试 greet()
函数:
use Prophecy\Prophet; class GreetTest extends PHPUnit_Framework_TestCase { public function testGreet() { $prophet = new Prophet; $stub = $prophet->prophesize(); $stub->getName()->willReturn('John Doe'); greet($stub->reveal()); $stub->getName()->shouldHaveBeenCalled(); } }
此测试确保 getName()
方法已被调用,并且 greet()
rrreee
will()
. Par exemple, pour configurer la méthode getName()
pour renvoyer "John Doe", utilisez : 🎜rrreee🎜🎜Verify call🎜🎜🎜Pour vérifier que l'objet stub a été appelé, vous pouvez utiliser shouldHaveBeenCalled()
Méthode : 🎜rrreee🎜🎜Cas pratique🎜🎜🎜Supposons que nous ayons une fonction greet()
qui accepte un paramètre de nom et imprime un message de bienvenue. 🎜rrreee🎜Nous pouvons utiliser Prophecy pour créer un objet stub pour tester la fonction greet()
: 🎜rrreee🎜Ce test garantit que la méthode getName()
a été appelée et La fonction greet()
imprime le message d'accueil correct. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!