有时候在我的代码,我会检查,看是否有特定的对象实现的接口:PHPUnit的,嘲笑的接口,和的instanceof
if ($instance instanceof Interface) {};
然而,PHPUnit中创建上述接口的嘲笑,我不能似乎通过了这个测试。
// class name is Mock_Interface_431469d7, does not pass above check
$instance = $this->getMock('Interface');
据我所知,拥有一个名为Interface的类与实现Interface的类不同,但我不确定如何处理这个问题。我不得不模拟一个实现Interface的具体类吗?这不会破坏使用可移植界面的目的吗?
感谢
是的,冷却器头为准。经过一整晚睡眠之后,我意识到我在嘲笑对象时并未使用完全限定的命名空间。 – 2010-07-15 13:53:03
略有不同的用例,但我可以检查一个实例是类的实例还是类的模拟实例。 – kapad 2013-08-24 21:51:23
@kapad您会发现,这是多态性的主要观点,您不必知道当前对象是否为class或mock的实例。如果你仍然需要知道,那么你做错了什么。 P.S.只是FYI你可以使用[get_class](http://ca1.php.net/manual/en/function.get-class.php)函数来知道对象的确切类名 – dVaffection 2013-10-02 22:47:48