我是一名探索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