如何模拟一个强制转换对象

时间:2016-08-08 17:24:56

标签: java mocking mockito powermock

我是模拟测试的新手,并且想知道如何用mockito嘲笑以下内容。

protected DAO<T, Long> dao;

其中dao定义为

from django.contrib.postgres.fields import JSONField
class Product():
        attributes = JSONField(...)

谢谢!

1 个答案:

答案 0 :(得分:1)

要为私有和受保护字段(没有公共setter方法)注入模拟,您必须使用反射。使用反射可以设置模拟对象来代替受保护的字段。以下是关于代码的示例。

Field hack = <PUT YOU CLASS NAME>.class.getDeclaredField("dao");
hack.setAccessible(true);
hack.set(<Object of the class where you are injecting the mock>,<the mock object>);

要创建模拟对象,您可以使用常规PowerMockito.mockMockito.mock函数。

有关反思的更多信息,请查看以下链接:

Is it possible in Java to access private fields via reflection http://www.java2s.com/Code/Java/Reflection/Setprivatefieldvalue.htm