-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