【发布时间】:2018-01-11 16:59:29
【问题描述】:
来自 Java 背景,我正在开发 php 代码库并想为我的代码添加单元测试。
我有一个服务类,它有一个如下的 DAO 类:
class ServiceClass {
private $daoClass;
public function methodToTest(){}
}
我没有提供构造函数,也没有为daoClass 属性添加setter 方法。这是因为它将使用 PHP-DI IoC 容器注入。
对于单元测试,我使用phpunit,所以我模拟daoClass 对象并使用反射直接注入该属性(因为该属性没有构造函数或设置器)。
在 java 中,我们可以使用@InjectMocks 注释或MockitoAnnotations.initMocks 方法轻松地做到这一点而无需反射。
我在phpunit 中找不到类似的方法。
另外,一个不同但相关的问题是,在我的测试中有什么方法可以创建私有属性并用一些标签对其进行注释,然后它会自动转换为模拟对象实例?就像 Java 中的 mockito 是如何做到的 @Mock 注释。
【问题讨论】:
-
我猜 PHP-DI 的 injection on existing instances feature 被使用了。你会考虑用它来组装被测试的对象吗?基本上你用手做的事情和它一样..
标签: java php unit-testing mocking phpunit