我該如何測試一個返回布爾值的方法,並且像這樣實現?單元測試JPA查詢
return entityManager.createQuery("SELECT(i) FROM Items i WHERE o.id=:id", Long.class).setParameter("id", id).getSingleResult() == 1;
entityManager
被注入課堂。
我想我大概應該驗證createQuery
被調用此查詢,然後setParameter
被調用id
,然後進行比較,然而結果是,沒有這樣的測試一個簡單的代碼行像有點大材小用這個? 我特別覺得在單元測試中使用整個select語句會感到不舒服。這似乎更像是我的實現細節。但是,還有什麼其他方式來檢查查詢是否實際檢查了COUNT項並執行其他操作?
用一般的經驗法則來增加這個(正確的)答案:用集成測試測試應用程序邊界處的代碼(在這種情況下是應用程序 - DB);在單元測試中測試只依賴於你的應用的其他「部分」的代碼 – crizzis