我是模拟测试的新手,并且想知道如何用mockito嘲笑以下内容。
protected DAO<T, Long> dao;
其中dao定义为
from django.contrib.postgres.fields import JSONField
class Product():
attributes = JSONField(...)
谢谢!
答案 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.mock
或Mockito.mock
函数。
有关反思的更多信息,请查看以下链接:
Is it possible in Java to access private fields via reflection http://www.java2s.com/Code/Java/Reflection/Setprivatefieldvalue.htm