【发布时间】:2014-01-03 10:38:30
【问题描述】:
代码:
MyMockClass.php
<?php
class MyMockClass
{
public function __construct($l)
{
// Do nothing with it
}
protected function loadData($var)
{
// Do something, it doesn't matter what
return null;
}
public function onEvent($key)
{
return $this->loadData($key);
}
}
MockTest.php
<?php
class MockTest extends \PHPUnit_Framework_TestCase
{
public function testPHPUnitMock()
{
$mock = $this->getMockBuilder('MyMockClass')->setConstructorArgs(array(true))->getMock();
$mock->expects($this->once())->method('loadData')->with('TEST')->will($this >returnValue(true));
$this->assertEquals(true, $mock->onEvent('TEST'));
}
}
当我运行这个测试时,它失败了,输出如下:
PHPUnit_Framework_ExpectationFailedException : Failed asserting that null matches expected true.
Expected :true
Actual :null
我正在尝试执行onEvent,它又会执行一个我已经模拟过的函数,并改变了它的结果。但是onEvent 函数似乎没有被调用。如果我将mail()(或类似的东西)放入onEvent,我将不会收到任何邮件。
【问题讨论】:
标签: php unit-testing mocking phpunit