我有这样的功能:
class Bar{
public function a():Foo{
.
.
.
}
}
现在我正在尝试使用 php 单元测试为类 Bar 创建一个模拟
$mockedBar = $this->getMockBuilder(Bar::class)
->getMock()
->method('a')
->willReturn(new FakeFoo());
但是当我调用方法a
时,我收到一个错误,即方法a
返回类型必须是 Foo 的实例而不是 Mocked_blahblah。
不幸的是,类 Bar 不使用任何接口,系统非常大,我无法创建接口,因为它在我的代码中进行了巨大的重构;有没有办法a
在模拟对象中禁用函数的返回类型?我正在使用 php7.2 和 phpunit 6.0.13。这是一个真实的场景:
class A
{
public function b():B
{
echo "i am from class A function b";
}
}
class B
{
}
class FakeB
{
}
class ATest extends TestCase
{
public function testSayHi(){
$mockedA = $this->getMockBuilder(A::class)
->getMock();
$mockedA->method('b')->willReturn(new FakeB());
$mockedA->b();
}
}