第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

預(yù)言 - 預(yù)計(jì)不會(huì)在對(duì)象上調(diào)用任何方法

預(yù)言 - 預(yù)計(jì)不會(huì)在對(duì)象上調(diào)用任何方法

PHP
慕勒3428872 2023-09-15 21:37:05
現(xiàn)在我在 PHPUnit 中使用以下代碼來期望模擬上不會(huì)調(diào)用任何方法:$object = $this->createMock(ClassA:class);$object->expects($this->never())->method($this->anything());到目前為止我還沒有找到在 Prophecy 中達(dá)到同樣結(jié)果的方法。到目前為止,我只能測(cè)試特定方法的假設(shè),而不能測(cè)試上面示例中的所有方法。目前,我正在使用以下自定義斷言來測(cè)試是否未調(diào)用任何方法。Prophecy 的 ObjectProphecy 公開了一個(gè)方法來獲取對(duì)特定函數(shù)的所有調(diào)用,因此我使用反射來獲取類上的所有方法,而不是每個(gè)方法的每次調(diào)用。如果之后調(diào)用數(shù)組為空,我就知道沒有調(diào)用任何方法。該方法現(xiàn)在如下所示:public function assertNoMethodHasBeenCalled(ObjectProphecy $prophecy, string $className){    $methods = get_class_methods($className);    $calls = [];    foreach ($methods as $method) {        $reflectionMethod = new \ReflectionMethod($className, $method);        $numArgs = count($reflectionMethod->getParameters());        $calls = array_merge(            $calls,            $prophecy->findProphecyMethodCalls(                $method,                new ArgumentsWildcard(array_fill(0, $numArgs, Argument::any()))            )        );    }    $this->assertEmpty($calls);}到目前為止,它適用于我有限的樣本量,但我對(duì)此并不滿意。我覺得應(yīng)該有一種更簡(jiǎn)單的方法來達(dá)到相同的結(jié)果。
查看完整描述

1 回答

?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

據(jù)我所知,用預(yù)言來實(shí)現(xiàn)這一目標(biāo)并不簡(jiǎn)單。


當(dāng)涉及到期望時(shí),Prophecy 的工作方式與 PHPUnit 的模擬不同。一旦您設(shè)置了期望,對(duì)模擬的每次調(diào)用(不是預(yù)測(cè)或承諾)都將無法通過測(cè)試。給出以下對(duì)象預(yù)言:


$prophecy = $this->prophesize(ClassA::class);

$prophecy->methodA()->shouldNotBeCalled();


$objectA = $prophecy->reveal();

兩個(gè)都


$objectA->methodA();


$objectA->methodB();

將無法通過測(cè)試。


因此,當(dāng)您沒有設(shè)置任何期望時(shí),您必須像以前一樣手動(dòng)檢查呼叫。


查看完整回答
反對(duì) 回復(fù) 2023-09-15
  • 1 回答
  • 0 關(guān)注
  • 98 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)