PHPUnit存根方法是否返回NULL?
我试图用它的一个方法来模拟一个单例:PHPUnit存根方法是否返回NULL?,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我试图用它的一个方法来模拟一个单例: public function setUp() { $this->_foo = $this->getMockBuilder('Foo') ->disableOriginalConstructor() ->getMock(); $this->_foo->expects($this->any()) ->method('bar') -&
public function setUp() {
$this->_foo = $this->getMockBuilder('Foo')
->disableOriginalConstructor()
->getMock();
$this->_foo->expects($this->any())
->method('bar')
->will($this->returnValue('bar'));
var_dump($this->_foo->bar());
}
问题是每次转储
NULL
。据我所知,当你模拟一个对象时,所有的方法都被替换为stub,这些stub返回NULL
,除非像我这样显式地stub。既然我已经将bar()
方法存根,为什么它不转储预期的'bar'
字符串呢?我做错了什么?我希望这能有所帮助,这完全是我的问题。它打印出所需的“条”。我建议检查您是否正在运行phpunit和我运行的php的最新版本:
PHPUnit 3.6.10和php5.4.6-1ubuntu1
$suite = new PHPUnit_Framework_TestSuite("TestTest");
class Foo {
function Bar()
{
return null;
}
}
class TestTest extends PHPUnit_Framework_TestCase
{
private $test_max_prod;
private $initial;
public function setUp() {
$this->_foo = $this->getMockBuilder('Foo')
->disableOriginalConstructor()
->getMock();
$this->_foo->expects($this->any())
->method('bar')
->will($this->returnValue('bar'));
var_dump($this->_foo->bar());
}
function tearDown() {
}
function testTest(){}
}
输出
PHPUnit 3.6.10 by Sebastian Bergmann.
.string(3) "bar"
Time: 0 seconds, Memory: 2.50Mb
OK (1 test, 1 assertion)
我希望这是有帮助的 这最终成为我的PHPUnit版本的一个问题。我更新到了最新的稳定版本,无法复制该问题。我遇到了相同的问题,对我来说,问题是我调用的方法在原始对象上不存在,正在由
\u call
处理。解决方案最终看起来像:
$this->_foo->expects($this->any())
->method('__call')
->with($this->equalTo('bar'))
->will($this->returnValue('bar'));