私はDAOにいくつかの変更を加えています。変更には、いくつかのコードをリファクタリングして、いくつかのメソッドが.getResultsList()
複数回呼び出されないようにすることが含まれていました。代わりに、結果は にキャッシュされ、List
後続のすべてのコードはそのリストで動作し、データベースに 1 回アクセスするだけでコードがより効率的に実行されます。
今後このようなことが起こらないように、変更したメソッドの jUnit テストを作成するように依頼されました。メソッド内のローカル変数に、mockito を使用して関数が呼び出された回数を検証することは可能ですか?
verify
モックされたオブジェクトで行われた呼び出しの数を検証するために使用することについて、いくつかの質問/フォーラムの投稿を見てきました。しかし、このオブジェクトはメソッド内で作成されているため、渡されないため、実際にはこのオブジェクトをモックすることはできません。
基本的 -
myDao
EntityManager
にはというクラス変数がem
あり、関数は変数em.createNamedQuery()
に格納されます。これは、.getResultsList が複数回呼び出されていたものです。TypedQuery
q
q
私の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>
myDao.myMethod(myVar);
呼び出しているメソッドはその DAO の内部にあるため、 Insideを呼び出すのmyMethod
は、リッスンしたい q 変数です。ローカル変数です。