我是一名探索PHP和PHPUnit的rails程序員。從RSpec切換到PHPUnit,我一直在努力。`expect_any_instance_of`等價於PHPUnit
更具體地說,RSpec有一個非常好的存根方法,稱爲expect_any_instance_of
,允許您存根任何類的任何實例。
我很努力地在PHPUnit中找到等價物。
這是我在代碼中的場景:
<?php
use PHPUnit\Framework\TestCase;
class SomeClass
{
public function testMethod()
{
$api_interface = new RemoteAPIClassObject();
$result = $api_interface->makeCall()
$this->assertEquals('foo', $result->api_response);
}
}
?>
我想存根方法makeCall
這是RemoteAPIClassObject
實例的一部分。有沒有什麼辦法可以在PHPUnit中做到這一點,所以我每次運行測試套件時都不需要對遠程服務器進行遠程API調用?
我已閱讀了PHPUnit test doubles and class mocks但是好像所有的PHPUnit存根/模擬方法都返回一個存根實例,這不是我想要的,因爲我試圖存根的方法更接近調用堆棧。
在rspec的我只想用我前面提到的方法存根電話:
expect_any_instance_of(RemoteAPIClassObject).to receive(:makeCall).and_return(some_stubbed_object)
也許我的策略是關閉的,我需要重新考慮我的測試?
嗨!歡迎來到PHP世界。我過去使用過「Mockery」(PHPUnit模擬不如表達)。爲了模擬http調用,'php-vcr'是一個不錯的項目。 – fedeisas