我可能在这里遗漏了一些非常微不足道的东西,但我无法让 phpunit 使用替代模拟类。
下面是一个示例,其中Foo
我正在测试Bar
的类和我想要模拟的类。
我希望下面的示例能够通过,因为我已经嘲笑Bar
了 stubedBar::heavy_lifting
以返回“not bar”,然后调用那个 trough Foo::do_stuff()
。然而它失败了,这个例子仍然返回“bar”,似乎完全忽略了我的存根。
class Foo {
public function do_stuff() {
$b = new Bar();
return $b->heavy_lifting();
}
}
class Bar {
public function heavy_lifting() {
return "bar";
}
}
class FooTest extends PHPUnit_Framework_TestCase {
public function testBar() {
$fake = "not bar";
$stand_in = $this->getMock("Bar");
$stand_in->expects($this->any())
->method("heavy_lifting")
->will($this->returnValue($fake));
$foo = new Foo();
$this->assertEquals($foo->do_stuff(), $fake);
}
}