我对单元测试比较陌生,所以也许有人可以在这里帮助我。
在终端中执行PHP单元测试时出现以下错误信息:
Fatal error: Call to undefined function Path'to'missing_function() in /path/to/file.php on line 123
通常情况下,我现在会使用getMock(originalClassName)
函数创建一个虚拟对象,然后预定义应该为missing_function()
返回的内容,但遗憾的是,该函数没有像我迄今为止测试的所有其他函数一样放置在任何接口/类中。
有人知道吗?恭喜恭喜!
一般来说,您只需将文件包含在函数中,并执行该函数。然后你只需要确保在你的代码被执行之后,应该发生的事情发生了。您更关心正在测试的代码的结果,而不是代码如何执行的过程。
但是,如果您需要模拟一个函数,有一种方法是使用名称空间(需要PHP 5.3+)。在您的测试文件中,您可以将"mock"函数放置在与代码相同的名称空间中。当函数被调用时,php首先在当前名称空间中查找,并将找到您的替换函数。在代码的正常运行中,它将继续到全局命名空间调用您的函数。
所以你的代码会像这样结束: 你们班:
namespace Foo;
class SUT {
public function bar() {
return baz();
}
}
测试:namespace Foo;
function bar() {
return 'boz';
}
class SUTTest extends PHPUnit_Framework_TestCase {
public function testBar() {
$sut = new SUT();
$this->assertEquals('boz', $sut->bar());
}
}