由于集成了Mockery,Laravel的Facade对单元测试非常友好,只需要一行代码就能实现mocking。
例如,测试目标方法中调用了订单工具类的一个方法,在使用依赖注入的方式时,需要用三行代码实现对这个方法的mocking:
|
|
而用Facade是这样的:
|
|
当测试目标方法也属于订单工具类时,需要部分mock这个类,所以还要加上一行:
|
|
但如果订单工具类的构造方法里有需要注入的依赖关系,这里并不会被执行。所以我在工具类基类里封装了一个方法,用反射机制实现手工注入依赖关系:
|
|
然后就可以这样处理:
|
|
由于集成了Mockery,Laravel的Facade对单元测试非常友好,只需要一行代码就能实现mocking。
例如,测试目标方法中调用了订单工具类的一个方法,在使用依赖注入的方式时,需要用三行代码实现对这个方法的mocking:
|
|
而用Facade是这样的:
|
|
当测试目标方法也属于订单工具类时,需要部分mock这个类,所以还要加上一行:
|
|
但如果订单工具类的构造方法里有需要注入的依赖关系,这里并不会被执行。所以我在工具类基类里封装了一个方法,用反射机制实现手工注入依赖关系:
|
|
然后就可以这样处理:
|
|