当尝试基于phpunit文档来存根一个简单的函数时,它似乎什么也不做。
<?php declare(strict_types=1);
class A {
public static function func() {
$helperData = A::helper();
return $helperData + 1;
}
public static function helper() {
return 5;
}
}
试验类别
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;
final class ATest extends TestCase
{
public function testFunc(): void
{
$stub = $this->createStub(A::class);
$stub->method('helper')
->willReturn(2);
$result = A::func();
$this->assertEquals(3, $result); // actual result is 6 not 3--why?
}
}
存根函数helper
没有返回我指定的2
,为什么会这样,我怎样才能成功地模拟函数的返回值?
1条答案
按热度按时间gdrx4gfi1#
你应该使用
$stub
对象而不是A
类来获取stubbed函数结果。你应该使用非静态方法来使用它。输出:
要使用
func
的原始代码,可以将其设置为静态,并使用A
示例作为参数,此A
示例可以是$stub
(因为$stub
是A&Stub
示例)。输出: