2012-07-26 44 views
6

我试图创建一个模拟,以满足typehint与此代码(嘲笑):模拟框架返回类不同的名称和类型

return \Mockery::mock('\Contracts\Helpers\iFileSystemWrapper'); 

或本(PHPUnit的):

return $this->getMock('\Contracts\Helpers\iFileSystemWrapper'); 

但是,返回的模拟被称为Mockery\Mock ObjectMock_iFileSystemWrapper_a5f91049。如果我不打算在任何一个框架中使用它,那么我应该如何检查它?

为什么模拟框架试图加载真实的类?如果我想要真正的课程,我会包括真正的课程。

这个问题在编写测试的时候让我放慢了很多次,我刚刚抛出类型暗示出窗口并检查类名,或者只是使用生产对象,因为嘲笑是一个痛苦的使用。

+1

显示结果;''那里$ mock'就是这个代码返回 – zerkms 2012-07-26 21:18:27

+0

'布尔(假)' - – Seralize 2012-07-26 21:21:15

+0

这是奇怪的:-S – zerkms 2012-07-26 21:24:13

回答

-2

您需要使用特殊功能来检查基类。 财产以后这样的:

$mock = $this->getMock('MyClass'); 
$this->assertInstanceOf('MyClass', $mock); 
+0

这只会测试模拟对象是您已经给出的类或接口的实例,它实际上只是测试测试框架:-)但是,如果您改为使用常规的'if'语句和'instanceof'运算符,那么好的IDE将停止向您显示其“无效参数类型”警告。 – leftclickben 2013-02-03 08:31:48

2

我只是尝试用我自己的现有的测试,并通过从一个存在于一个改变接口命名空间名称不存在,我得到了完全一样的你描述(使用phpunit)。我的模拟对象的类名称为Mock_ViewInterface_c755461e。当我将其更改回正确的界面名称时,它工作正常。

所以我要说的是,无论是:

  1. 您正在尝试使用一个不存在的接口的名称(例如,一个错字或丢失的命名空间部件)。
  2. 由于某些原因,您的图书馆代码未被加载,例如在您的单元测试引导程序中,自动加载未正确设置。的var_dump`($模拟的instanceof \ \合同帮手\ iFileSystemWrapper)
相关问题