package cn.aofeng.demo.easymock;
import static org.junit.Assert.*;
import java.io.IOException;
import static org.easymock.EasyMock.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import cn.aofeng.demo.jetty.HttpGet;
/**
* {@link UserService}的单元测试用例。
*
* @author 聂勇
*/
public class UserServiceTest {
private HttpGet _mock = createMock(HttpGet.class);
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
reset(_mock);
}
/**
* 测试用例:获取用户昵称
* 前置条件:
*
* 网络请求时发生IO异常 ** * 测试结果: *
* 返回默认的用户昵称"用户xxx" **/ @Test public void testGetNickname4OccursIOError() throws IOException { // 设置Mock expect(_mock.getSomeThing(anyString())) .andThrow(new IOException("单元测试特意抛的异常")); replay(_mock); UserService us = new UserService(); us.setHttpGet(_mock); String nickname = us.getNickname("123456"); verify(_mock); // 校验mock assertEquals("用户123456", nickname); // 检查返回值 } /** * 测试用例:获取用户昵称
* 1、网络请求成功。 * 2、响应状态码为200且响应内容符合接口定义({\"nickname\":\"张三\"})。 ** * 测试结果: *
* 返回"张三" **/ @Test public void testGetNickname4Success() throws IOException { // 设置Mock _mock.getSomeThing(anyString()); expectLastCall().andReturn("{\"nickname\":\"张三\"}"); expectLastCall().times(1); replay(_mock); UserService us = new UserService(); us.setHttpGet(_mock); String nickname = us.getNickname("123456"); verify(_mock); // 校验方法的调用次数 assertEquals("张三", nickname); // 校验返回值 } }