package com.paic.wms.service.auditflow.impl;

import static org.junit.Assert.*;

import java.util.ArrayList;

import java.util.List;

import org.json.JSONArray;

import org.json.JSONObject;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import com.paic.mms.dto.PsPaicEmpInfoDTO;

import com.paic.wp.dao.system.AuditFlowDAO;

import com.paic.wp.service.system.AuditFlowServiceImpl;

//Let's import Mockitostatically so that the code looks clearer

import static org.mockito.Mockito.*;

//import staticorg.powermock.api.mockito.PowerMockito.*;

public class AuditFlowServiceImplTest {

AuditFlowServiceImpl service;

AuditFlowDAO daoMock;

@Before

public void setUp() throws Exception {

service = new AuditFlowServiceImpl();

daoMock = mock(AuditFlowDAO.class);

service.setAuditFlowDAO(daoMock);

}

@Test

public final void testSelectPsEmpInfoByUm() throws Exception {

testUmIsNull();

testUmIsNotNullAndPaPaicEmpInfoListIsNull();

testUmIsNotNullAndPaPaicEmpInfoListIsNotNull();

}

@Test

public final void testSelectPsEmpInfoByUmOrName() throws Exception {

testUmIsNullForByUmOrName();

testUmIsNotNullAndPaPaicEmpInfoListIsNullForByUmOrName();

testUmIsNotNullAndPaPaicEmpInfoListIsNotNullForByUmOrName();

}

@After

public void tearDown() throws Exception {

service = null;

}

private void testUmIsNotNullAndPaPaicEmpInfoListIsNotNull() throws Exception{

//given

String um = "zhengxinliang001";

List<PsPaicEmpInfoDTO> list = getPsPaicEmpInfoList();

//when

when(daoMock.selectPsEmpInfoByUm("zhengxinliang001")).thenReturn(list);

PsPaicEmpInfoDTO dto = service.selectPsEmpInfoByUm(um);

//then

assertEquals("郑新良", dto.getLAST_NAME());

}

private List<PsPaicEmpInfoDTO> getPsPaicEmpInfoList() {

PsPaicEmpInfoDTO dtoInServer = new PsPaicEmpInfoDTO();

dtoInServer.setPAIC_UM_NUM("zhengxinliang001");

dtoInServer.setLAST_NAME("郑新良");

dtoInServer.setDEPTID("10000000");

dtoInServer.setDEPT_NAME("平安机构");

List<PsPaicEmpInfoDTO> list = newArrayList<PsPaicEmpInfoDTO>();

list.add(dtoInServer);

return list;

}

private void testUmIsNotNullAndPaPaicEmpInfoListIsNull() throws Exception {

//given

String um = "noBody001";

//when

when(daoMock.selectPsEmpInfoByUm("noBody001")).thenReturn(null);

PsPaicEmpInfoDTO dto = service.selectPsEmpInfoByUm(um);

//then

assertEquals(dto, null);

}

private void testUmIsNull() throws Exception {

//given

String um = null;

//when

when(daoMock.selectPsEmpInfoByUm("")).thenReturn(null);

PsPaicEmpInfoDTO dto = service.selectPsEmpInfoByUm(um);

//then

assertEquals(dto, null);

}

//当um账号存在的时候

private void testUmIsNotNullAndPaPaicEmpInfoListIsNotNullForByUmOrName()throws Exception{

//given

String um = "zhengxinliang001";

//when

when(daoMock.selectPsEmpInfoByUmOrName(um)).thenReturn(getPsPaicEmpInfoList());

String umInfoFromService = service.selectPsEmpInfoByUmOrName(um);

//then

JSONObject umInfo = getPsEmpInfoJSON();

assertEquals(umInfo.toString(), umInfoFromService);

}

private JSONObject getPsEmpInfoJSON() {

JSONObject umInfo = new JSONObject();

umInfo.put("um", "zhengxinliang001");

umInfo.put("name", "郑新良");

umInfo.put("deptNo", "10000000");

umInfo.put("deptName", "平安机构");

JSONArray empArray = new JSONArray();

empArray.put(umInfo);

JSONObject returnJSON = new JSONObject();

returnJSON.put("size", 1);

returnJSON.put("zhengxinliang001", empArray);

return returnJSON;

}

//um账号不存在的时候

private void testUmIsNotNullAndPaPaicEmpInfoListIsNullForByUmOrName()throws Exception{

//given

String um = null;

//when

when(daoMock.selectPsEmpInfoByUm("noBody001")).thenReturn(null);

String umInfoFromService = service.selectPsEmpInfoByUmOrName(um);

//then

JSONObject umInfo = new JSONObject();

umInfo.put("size", "0");

assertEquals(umInfoFromService, umInfo.toString());

}

//当um账号是空的时候

private void testUmIsNullForByUmOrName() throws Exception {

//given

String um = null;

//when

when(daoMock.selectPsEmpInfoByUm("")).thenReturn(null);

String umInfoFromService = service.selectPsEmpInfoByUmOrName(um);

//then

JSONObject umInfo = new JSONObject();

umInfo.put("size", "0");

assertEquals(umInfoFromService, umInfo.toString());

}

}

MOCKITO 应用示例的更多相关文章

  1. Mockito常用方法及示例

    Mockit是一个开源mock框架,官网:http://mockito.org/,源码:https://github.com/mockito/mockito 要使用Mockit,首先需要在我们工程中引 ...

  2. [译]Google官方关于Android架构中MVP模式的示例

    概述 该示例(TODO-MVP)是后续各种示例演变的基础,它主要演示了在不带架构性框架的情况下实现M-V-P模式.其采用手动依赖注入的方式来提供本地数据源和远程数据源仓库.异步任务通过回调处理. 注意 ...

  3. JUnit + Mockito 单元测试(二)

    摘自: http://blog.csdn.net/zhangxin09/article/details/42422643 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 入门 ...

  4. 转:Android官方MVP架构示例项目解析

    转自: http://www.infoq.com/cn/articles/android-official-mvp-architecture-sample-project-analysis 作者 吕英 ...

  5. JavaEE参考示例 SpringSide 4.0 GA版杀青

    SpringSide是以Spring Framework为核心的,Pragmatic风格的JavaEE应用参考示例,是JavaEE世界中的主流技术选型,较佳实践的总结与演示. 经过漫长的7个月和6个R ...

  6. [转载]5分钟了解Mockito

    原文链接: http://liuzhijun.iteye.com/blog/1512780/ 5分钟了解Mockito 博客分类: Open SourceJava 一.什么是mock测试,什么是moc ...

  7. JUnit + Mockito 单元测试(二)(good)

    import org.junit.Test; import org.mockito.Matchers; import org.mockito.Mockito; import java.util.Lis ...

  8. Google官方MVP模式示例项目解析 todo-mvp

    转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6700668.html 引言:在Google没有给出一套权威的架构实现之前,很多App项目在架构方面都有或多 ...

  9. 单元测试系列:Mock工具之Mockito实战

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6780719.html 在实际项目中写单 ...

随机推荐

  1. 为Cocos2d-x的Android平台加入Protobuffer支持

    为Cocos2d-x的Android平台加入Protobuffer支持 分类: 工作2013-11-27 18:00 386人阅读 评论(1) 收藏 举报 cocos2d-xandroid平台交叉编译 ...

  2. muduo 与 libevent2 吞吐量对照

    libevent 是一款很好用的 C 语言网络库,它也採用 Reactor 模型,正好能够与 muduo 做一对照. 本文用 ping pong 測试来对照 muduo 和 libevent2 的吞吐 ...

  3. 修改Hadoop作业调度算法过程解析

    最近几个星期一直在修改hadoop的计算能力调度算法,遇到了这样那样的问题. 我修改的版本是hadoop-0.20.2 第一步: 将hadoop的源码加载到eclipse中配置使用ant编译 第二步: ...

  4. PHP - 防止 XSS(跨站脚本攻击)

    <?PHP /** * @blog http://www.phpddt.com * @param $string * @param $low 安全别级低 */ function clean_xs ...

  5. iOS开发之使用Ad Hoc进行测试

    由于最近某个项目需要给别人测试,使用的是Ad Hoc方法 首先登录开发者官网配置证书 1.添加Certificates,从电脑获取certSigningRequest然后添加进去 2.在Identif ...

  6. 模拟QQ系统设置面板实现功能

    业务需求: 基于网盘客户端的实现,原有网盘的设置面板无论从界面显示还是从业务需求都不能满足我们的正常需求.当前的要求是,模拟QQ系统设置的面板实现当前我们网盘中的基本配置功能.在完成这篇文章时已将基本 ...

  7. Qt状态机框架

    The State Machine Framework 状态机框架提供了用于创建和执行状态图的类.概念和符号是基于Harel的Statecharts: A visual formalism for c ...

  8. Swift - .plist文件数据的读取和存储

    每次在Xcode中新建一个iOS项目后,都会自己产生一个.plist文件,里面记录项目的一些配置信息.我们也可以自己创建.plist文件来进行数据的存储和读取. .plist文件其实就是一个XML格式 ...

  9. Flexigrid折行显示问题

    上会写的Flexigrid折行显示时,获取值有问题,报错. getRows: function(){ //add by jej var rtnList = new Array(); var objRo ...

  10. android随记

    [Android]中国大部分城市地区的结构定义与按拼音排序  http://blog.csdn.net/sodino/article/details/6739522