我的测试套件中有几个测试在Zend_Test中运行
一个测试通过PHPUnit的MockBuilder创建一个Foo_Bar_Baz
的模拟作为该类的依赖。现在在Foo_BAR_baz
的测试中(案例的变化是有目的的,并且由于自动加载是必要的),我没有得到类,而是模拟的一个实例,这显然不起作用。
在对象上执行var_dump
会导致class Foo_Bar_Baz#27115(0) { }
,因此它似乎正在创建模拟的实例。
修复模拟中的情况可以使事情按预期工作。我以前从未在模拟对象中看到过这种行为。由于某种原因,模拟的类被加载到PHP中,以便当下一个测试尝试实例化真实对象时,它将实例化mock。为什么会发生这种情况?
答案 0 :(得分:0)
PHP中的类名不区分大小写,但* nix服务器上的文件名是。
我怀疑由于自动加载机制,案例的变化导致行为发生变化; PHP只会自动加载Foo_Bar_Baz.php和Foo_BAR_Baz.php中的一个。
在您的情况下,如果您已经定义了一个类Foo_BAR_Baz(作为模拟),那么PHP将对Foo_Bar_Baz使用相同的定义,从而忽略您的真实类定义。