使用 prophecy 擴(kuò)展 php 函數(shù)可通過(guò)以下步驟實(shí)現(xiàn):使用 composer 安裝 prophecy。使用 prophesize() 方法創(chuàng)建樁對(duì)象。使用 will() 方法配置樁對(duì)象的行為。使用 shouldhavebeencalled() 方法驗(yàn)證樁對(duì)象是否已被調(diào)用。
如何使用 Prophecy 擴(kuò)展 PHP 函數(shù)?
Prophecy 是 PHP 中一個(gè)靈活且強(qiáng)大的樁框架。它允許您輕松地創(chuàng)建樁對(duì)象,這些對(duì)象可以用于測(cè)試目的而不會(huì)實(shí)際修改正在測(cè)試的代碼。
安裝 Prophecy
首先,使用 Composer 安裝 Prophecy:
composer require prophecy/prophecy
登錄后復(fù)制
創(chuàng)建樁對(duì)象
要?jiǎng)?chuàng)建樁對(duì)象,請(qǐng)使用 prophesize()
方法:
$stub = $prophecy->prophesize();
登錄后復(fù)制
此代碼將創(chuàng)建一個(gè)樁對(duì)象,該對(duì)象充當(dāng)未指定的類(lèi)或接口。
配置樁對(duì)象
接下來(lái),您可以使用 will()
方法配置樁對(duì)象的行為。例如,要配置 getName()
方法返回 “John Doe”,請(qǐng)使用:
$stub->getName()->willReturn('John Doe');
登錄后復(fù)制
驗(yàn)證調(diào)用
要驗(yàn)證樁對(duì)象是否已被調(diào)用,可以使用 shouldHaveBeenCalled()
方法:
$stub->getName()->shouldHaveBeenCalled();
登錄后復(fù)制
實(shí)戰(zhàn)案例
假設(shè)我們有一個(gè)函數(shù) greet()
,它接受一個(gè)名稱(chēng)參數(shù)并打印一條問(wèn)候信息。
function greet($name) { echo "Hello, $name!"; }
登錄后復(fù)制
我們可以使用 Prophecy 創(chuàng)建一個(gè)樁對(duì)象來(lái)測(cè)試 greet()
函數(shù):
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(); } }
登錄后復(fù)制
此測(cè)試確保 getName()
方法已被調(diào)用,并且 greet()
函數(shù)打印了正確的問(wèn)候語(yǔ)。