【发布时间】:2012-07-25 13:30:54
【问题描述】:
我正在尝试使用此代码创建一个模拟来满足类型提示(模拟):
return \Mockery::mock('\Contracts\Helpers\iFileSystemWrapper');
或者这个(PHPUnit):
return $this->getMock('\Contracts\Helpers\iFileSystemWrapper');
但返回的模拟名为Mockery\Mock Object 或Mock_iFileSystemWrapper_a5f91049。当它不是我需要的任何一个框架的实例时,我应该如何输入检查?
mock 框架究竟为什么要加载真实的类?如果我想要真正的班级,我会包括真正的班级。
这个问题让我在编写测试时放慢了很多次,我将把类型提示扔出窗口并检查类名,或者干脆使用生产对象,因为模拟使用起来很痛苦。
【问题讨论】:
-
显示
var_dump($mock instanceof \Contracts\Helpers\iFileSystemWrapper);的结果,其中$mock是此代码返回的内容 -
我也遇到了 PHPUnit 的问题,这让我很抓狂。有时模拟是接口,有时不是。
标签: php unit-testing mocking phpunit mockery