[英]PHPUnit: How to mock an internally called function by the method under test
在下面的例子中,我想嘲弄的呼叫getBaseValue()
內multipliedValue()
但我無法弄清楚。
class Sample
{
function multipliedValue()
{
$value = $this->getBaseValue();
return $value * 2;
}
function getBaseValue()
{
return 2;
}
}
我使用過PHPUnit模擬,但是沒有用。 因此,我使用了以下代碼:
class SampleTest extends PHPUnit_Framework_TestCase
{
function testMultipliedValueIfBaseValueIsFalse()
{
$mockedObject = $this->getMockBuilder(Sample::class)
->setMethods(['multipliedValue', 'getBaseValue'])
->getMock();
$mockedObject->expects($this->any())
->method("getBaseValue")
->willReturn(false);
$result = $mockedObject->multipliedValue();
$this->assertFalse($result);
}
}
我試圖創建一個全局函數,但是僅強制其中一種方法返回我想要的值,其余方法照原樣進行。 我應該如何進行這項測試?
我當前遇到的錯誤是multipliedValue()
方法中的$this
,將其視為存根對象。
->setMethods()
列出的所有方法都將被存根,並且默認情況下返回null
,因此,如果您只想存根getBaseValue
請執行以下操作:
$mockedObject = $this->getMockBuilder(Sample::class)
->setMethods(['getBaseValue'])
->getMock();
$mockedObject->expects($this->any())
->method("getBaseValue")
->willReturn(false);
$result = $mockedObject->multipliedValue();
$this->assertFalse($result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.