参见
http://www.iteye.com/topic/770438
JMock 默认是只支持针对接口的mock, 加了以下的设置可以对类进行mock
// set imposteriser to instance and CGLIB will be used,
context.setImposteriser(ClassImposteriser.INSTANCE);
第0章 概述
第1章 jmock初体验
第2章 期望
第3章 返回值
第4章 参数匹配
第5章 指定方法调用次数
第6章 指定执行序列
第7章 状态机
@Test
public void testFindAddress() {
// 建立一个test上下文对象。
Mockery context = new Mockery();
// 生成一个mock对象
final AddressService addressServcie = context
.mock(AddressService.class);
// 设置期望。
context.checking(new Expectations() {
{
// 当参数为"allen"的时候,addressServcie对象的findAddress方法被调用一次,并且返回西安。
oneOf(addressServcie).findAddress("allen");
will(returnValue(Para.Xian));
}
});
UserManager manager = new UserManager();
// 设置mock对象
manager.addressService = addressServcie;
// 调用方法
Address result = manager.findAddress("allen");
// 验证结果
Assert.assertEquals(Result.Xian, result);
}