hzdavid / jmockit.cn

JMockit中文网(jmockit.cn)上所有讲述的测试示例源代码
36 stars 15 forks source link

请问JMockit怎么执行SQL语句 #16

Closed yaochaochen closed 4 years ago

yaochaochen commented 5 years ago

项目里有数据库交互时,比如查询JMockit 执行的SQL结果集是为空的。然后导致覆盖不到赋值的代码 Object o = entityManager.createNativeQuery(sql).getResultList(); 怎么处理?

hzdavid commented 5 years ago

没有太明白你的意思。再详细描述一下吧。

yaochaochen commented 5 years ago

JMockit当遇到DAO层查询时,怎么和DAO层交互,我用JMockit遇到查询语句返回实体时,这个实体是空的。怎么MockDAO层

panh1992 commented 5 years ago

dataQuery.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); 这句mock时, 会报强制转换异常

hzdavid commented 5 years ago

JMockit当遇到DAO层查询时,怎么和DAO层交互,我用JMockit遇到查询语句返回实体时,这个实体是空的。怎么MockDAO层

你是想,当执行你的test时, entityManager.createNativeQuery(sql).getResultList()这段代码不要真正地查数据库,而是你可以mock这段代码的返回值?

是这个意思么?

yaochaochen commented 5 years ago

是的,怎么Mock它的返回值

hzdavid commented 5 years ago

是的,怎么Mock它的返回值

你说的其实是JMockit的级联Mock的场景,即对一个Mock对象的某个方法的返回值进行Mock, 这也有很多方法, 以你举的例子来说,可以很简单做到。 写了个例子给你, 见 http://www.jmockit.cn/showArticle.htm?channel=4&id=33

hzdavid commented 5 years ago

源代码,可以去 https://github.com/hzdavid/jmockit.cn 下载。

运行CascadingMockTest.java 就可以。