gpt4 book ai didi

php - 单元测试调用具体子方法的抽象类方法

转载 作者:行者123 更新时间:2023-12-04 04:54:45 25 4
gpt4 key购买 nike

我有一个抽象类,它有一个抽象方法和一个具体方法。

具体方法调用抽象方法并使用其返回值。

如何模拟这个返回值?

所以抽象类是

abstract class MyAbstractClass
{
/**
* @return array()
*/
abstract function tester();

/**
* @return array()
*/
public function myconcrete()
{
$value = $this->tester(); //Should be an array

return array_merge($value, array("a","b","c");
}
}

我想测试 myconcrete 方法,所以我想模拟测试器的返回值 - 但它是在方法内部调用的?

这可能吗?

最佳答案

是的,这是可能的。您的测试应如下所示:

class MyTest extends PHPUnit_Framework_TestCase
{
public function testTester() {
// mock only the method tester all other methods will keep unchanged
$stub = $this->getMockBuilder('MyAbstractClass')
->setMethods(array('tester'))
->getMock();

// configure the stub so that tester() will return an array
$stub->expects($this->any())
->method('tester')
->will($this->returnValue(array('1', '2', '3')));

// test myconcrete()
$result = $stub->myconcrete();

// assert result is the correct array
$this->assertEquals($result, array(
'1', '2', '3', 'a', 'b', 'c'
));
}
}

请注意,我使用的是 PHPUnit 3.7.10

关于php - 单元测试调用具体子方法的抽象类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16918020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com