jmockit Mock级联操作
from Jmockit 中文网 http://jmockit.cn/showArticle.htm?channel=4&id=33
//级联Mock:对Mock对象的方法返回再进行Mock public class CascadingMockTest { @Test public void testCascading() { //下面以Mock EntityManager.createNativeQuery的返回对象为例 这个新版本不能这么玩了 EntityManager entityManager = new MockUp<EntityManager>() { @Mock public Query createNativeQuery(String sqlString) { //返回一个自定义Query的匿名内部类就可以 return new Query() { @Override public List getResultList() { //在这里书写你的Mock逻辑, // mock的返回数据 List<Object> mockResult = new ArrayList<Object>(); mockResult.add(new Object()); mockResult.add(new Object()); return mockResult; } @Override public Object getSingleResult() { // TODO Auto-generated method stub return null; } @Override public int executeUpdate() { // TODO Auto-generated method stub return 0; } @Override public Query setMaxResults(int maxResult) { // TODO Auto-generated method stub return null; } @Override public Query setFirstResult(int startPosition) { // TODO Auto-generated method stub return null; } @Override public Query setHint(String hintName, Object value) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(String name, Object value) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(String name, Date value, TemporalType temporalType) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(String name, Calendar value, TemporalType temporalType) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(int position, Object value) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(int position, Date value, TemporalType temporalType) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(int position, Calendar value, TemporalType temporalType) { // TODO Auto-generated method stub return null; } @Override public Query setFlushMode(FlushModeType flushMode) { // TODO Auto-generated method stub return null; } }; } // 下面的getMockInstance()在新版本可能被删除,还有上面的把MockUp赋给实例在新版本也没有 }.getMockInstance(); String yoursql = ""; //可以发现,我们成功地对entityManager.createNativeQuery方法返回值进行了Mock Assert.assertTrue(entityManager.createNativeQuery(yoursql).getResultList().size() == 2); }
//级联Mock:对Mock对象的方法返回再进行Mockpublic class CascadingMockTest { @Test public void testCascading() { //下面以Mock EntityManager.createNativeQuery的返回对象为例 EntityManager entityManager = new MockUp<EntityManager>() { @Mock public Query createNativeQuery(String sqlString) { //返回一个自定义Query的匿名内部类就可以 return new Query() { @Override public List getResultList() { //在这里书写你的Mock逻辑, // mock的返回数据 List<Object> mockResult = new ArrayList<Object>(); mockResult.add(new Object()); mockResult.add(new Object()); return mockResult; } @Override public Object getSingleResult() { // TODO Auto-generated method stub return null; } @Override public int executeUpdate() { // TODO Auto-generated method stub return 0; } @Override public Query setMaxResults(int maxResult) { // TODO Auto-generated method stub return null; } @Override public Query setFirstResult(int startPosition) { // TODO Auto-generated method stub return null; } @Override public Query setHint(String hintName, Object value) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(String name, Object value) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(String name, Date value, TemporalType temporalType) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(String name, Calendar value, TemporalType temporalType) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(int position, Object value) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(int position, Date value, TemporalType temporalType) { // TODO Auto-generated method stub return null; } @Override public Query setParameter(int position, Calendar value, TemporalType temporalType) { // TODO Auto-generated method stub return null; } @Override public Query setFlushMode(FlushModeType flushMode) { // TODO Auto-generated method stub return null; } }; } }.getMockInstance(); String yoursql = ""; //可以发现,我们成功地对entityManager.createNativeQuery方法返回值进行了Mock Assert.assertTrue(entityManager.createNativeQuery(yoursql).getResultList().size() == 2); }

浙公网安备 33010602011771号