我正在学习使用 PHPUnit 进行单元测试,并且遇到了一个我无法解决的模拟对象的奇怪问题。我将这些虚拟文件设置为我所遇到的示例:
第一类
class PrimaryObj1
{
function doNothing(SecondObj $s)
{
}
}
2 类
class PrimaryObj2
{
function doNothing(SecondObj $s)
{
$s->TestMethod();
}
}
和一个测试文件:
class PrimaryObj1_test extends PHPUnit_Framework_TestCase
{
private $primaryObj;
function setUp()
{
$this->primaryObj = new PrimaryObj1();
}
function testDoNothing()
{
$secondObj = $this->getMock('SecondObj');
$secondObj->expects($this->once())
->method("TestMethod");
$this->primaryObj->doNothing($secondObj);
}
}
(每个虚拟类都有一个测试文件,除了类名外,其他一切都相同)。
当我运行 PHPUnit 时,这是我得到的:
Running Tests/PrimaryObj1_test.php
1) PrimaryObj1_test::testDoNothing
Expectation failed for method name is equal to <string:TestMethod> when invoked 1 time(s).
Method was expected to be called 1 times, actually called 0 times.
Running Tests/PrimaryObj2_test.php
Fatal error: Call to undefined method Mock_SecondObj_99c898e7::TestMethod() in PrimaryObj2.php on line 5
所以首先它没有调用预期的方法很生气,但是当我这样做时它变得很生气,因为它是未定义的。我就是赢不了。我想这就是为什么我仍然单身...
关于为什么会发生这种情况的任何想法?