-1
我使用的Mockito嘲笑結果集的Java持久性查詢:Mockito空指針與TypedQuery?
代碼被嘲笑:
public void queryMethod(String name){
List<Person> result = persistence.entityManager().createQuery(
"Select p from Person p +
" where p.name= :uniqueId" , Person.class)
.setParameter("name", name)
.getResultList();
}
測試代碼:
String name = "anyName";
Person person = mock(Person.class);
List<Person> personList = new ArrayList<>();
personList.add(person);
TypedQuery query = mock(TypedQuery.class);
when(entityManager.createQuery(anyString(), Matchers.<Class<Object>>anyObject())).thenReturn(query);
when(query.setParameter(1, name)).thenReturn(query);
when(query.getResultList()).thenReturn(personList);
我得到一個空行指針錯誤:
List<Person> result = persistence.entityManager().createQuery(
什麼可能導致這種情況?
的可能的複製[什麼是空指針異常,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – GhostCat
@GhostCat你是什麼意思?請解釋 – java123999
也許我有點太快了。但重點是:在這一行中,至少有兩個對象可以給你NPE。 A)*持久性* B)調用entityManager()的結果C),然後是createQuery()的結果。長話短說:你必須確保每個這樣的調用都返回非空的東西。 – GhostCat