我正在对 DAO 进行一些修改。修改包括重构一些代码以防止几个方法被.getResultsList()
多次调用。相反,结果被缓存到 aList
并且所有后续代码都与该列表一起使用,从而使代码运行更有效,只需访问数据库一次。
我被要求为我修改的方法创建 jUnit 测试,以确保将来不会再发生类似的事情。我是否可以验证方法中的局部变量使用 mockito 调用了多少次函数?
我已经看到了几个关于verify
用于验证对模拟对象进行的调用次数的问题/论坛帖子。但我实际上无权模拟这个对象,因为它是在方法内部创建的,任何没有被传入。
基本上 -
myDao
有一个类变量EntityManager
调用em
,em.createNamedQuery()
函数存储到一个TypedQuery
变量q
中。这q
就是 .getResultsList 被多次调用的原因。
在我的 jUnit 测试中,是否可以监听我在模拟的 Dao 上调用的方法内部发生的情况,并确保q.getResultsList
在方法运行时只调用一次?
更新
myDao
在我的测试类中是使用@Autowired
注释配置的,如下所示:
@Autowired
MyDao myDao;
它在 applicationContext.xml 中定义,如下所示:
<bean id="myDao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.mypackage.myDao"/>
</bean>
我调用的方法在 DAO 内部,所以我调用myDao.myMethod(myVar);
InsidemyMethod
是我想听的 q 变量。这是一个局部变量。