【发布时间】:2013-04-27 04:17:15
【问题描述】:
我的测试套件中有几个测试在 Zend_Test 中运行
一个测试通过 PHPUnit 的 MockBuilder 创建一个模拟 Foo_Bar_Baz 作为该类的依赖项。现在在Foo_BAR_baz 的测试中(更改大小写是故意的,并且由于自动加载是必要的),我没有得到类,而是模拟的一个实例,这显然不起作用。
对对象执行var_dump 会产生class Foo_Bar_Baz#27115(0) { },因此它似乎是在创建模拟实例。
修复模拟中的情况可以让事情按预期工作。我以前从未在模拟对象中看到过这种行为。由于某种原因,模拟类被加载到 PHP 中,因此当下一个测试尝试实例化真实对象时,它会实例化模拟类。为什么会发生这种情况?
【问题讨论】:
-
“我没有得到课程,而是模拟的一个实例” - 你能澄清一下吗?您的代码(不是测试)正在实例化一个对象,并且您期望它是一个究竟是什么的实例,而您得到的究竟是什么?
-
读了几遍之后也许会有所帮助:如果你正在创建一个模拟类并以真正的具体类命名它,那么你将永远无法将具体类放入内部注册表。
-
我可以得到类名相同的具体类。只有当它们与我的示例不同时,它才不起作用。通常这在 PHPUnit 中有效,除非在这种非常奇怪的情况下。