2013-02-12 28 views
2
public UserEntity findUserByUsername(String username) { 

    QUserEntity tableUser = QUserEntity.userEntity; 

    JPAQuery query = new JPAQuery(entityManager) 
     .from(tableUser) 
     .where(tableUser.ds_username.eq(username)); 

    return (UserEntity) query.singleResult(tableUser); 
} 

使用最新版本的junit。如何在給定方法內測試querydsl查詢?

+0

你想測試沒有數據庫連接的方法嗎? – ponzao 2013-02-12 19:04:10

+0

是的,這裏的意圖是單元測試,而不是集成測試 – 2013-02-12 23:25:29

回答

0

您可以嘲笑EntityManager並驗證Querydsl是否按照您預期的方式使用了EntityManager

+0

我想這將是唯一的方法。如果我依靠querydsl操縱entityManager的方式,我不會在任何即將發佈的querydsl更新中獲得任何意外,是嗎?我不確定這是否是最安全的方法,如果不是這樣,我最終會將其委派給集成測試。 – 2013-02-12 23:28:03

+0

如果你想測試Querydsl的內部邏輯,那麼用模擬的EntityManager進行單元測試是可行的。如果你只是想確保你的findUserByUsername方法有效,那麼集成測試將是一個更好的選擇。 – 2013-02-13 08:18:34