Prophecy

2018-02-24 15:42 更新

Prophecy

Prophecy 是個(gè)“極為自我卻又非常強(qiáng)大且靈活的 PHP 對(duì)象模仿框架。雖然一開始是為了滿足 phpspec2 的需要而建立的,但它足夠靈活,可以用最小代價(jià)用于任何測(cè)試框架內(nèi)?!?/p>

從版本 4.5 開始,PHPUnit 為用 Prophecy 建立測(cè)試替身提供了內(nèi)建支持。Example?9.17, “測(cè)試某個(gè)方法會(huì)以特定參數(shù)被調(diào)用一次”展示了Example?9.11, “測(cè)試某個(gè)方法會(huì)以特定參數(shù)被調(diào)用一次”中展示的測(cè)試應(yīng)該如何用 Prophecy 的的預(yù)言式理念方式來(lái)達(dá)到同樣的效果:

Example?9.17.?測(cè)試某個(gè)方法會(huì)以特定參數(shù)被調(diào)用一次

<?php
class SubjectTest extends PHPUnit_Framework_TestCase
{
    public function testObserversAreUpdated()
    {
        $subject = new Subject('My subject');

        // 為 Observer 類建立預(yù)言(prophecy)。
        $observer = $this->prophesize('Observer');

        // 建立預(yù)期狀況:update() 方法將會(huì)被調(diào)用一次,
        // 并且將以字符串 'something' 為參數(shù)。
        $observer->update('something')->shouldBeCalled();

        // 揭示預(yù)言,并將仿件對(duì)象鏈接到主體上。
        $subject->attach($observer->reveal());

        // 在 $subject 對(duì)象上調(diào)用 doSomething() 方法,
        // 預(yù)期將以字符串 'something' 為參數(shù)調(diào)用 
        // Observer 仿件對(duì)象的 update() 方法。
        $subject->doSomething();
    }
}
?>

更多關(guān)于如何用這個(gè)測(cè)試替身框架來(lái)創(chuàng)建、配置及使用樁件、諜件、仿件的細(xì)節(jié),請(qǐng)參考 Prophecy 的 文檔。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)