mock是个模拟测试的东西,她创造的东西都是假的,在数据库测试,网络测试中可以 用的很爽!
public class MockPrototypeTestCase extends org.jmock.MockObjectTestCase {
Mock accountService = null;
MockPrototype mo = new MockPrototype();
protected void setUp() throws Exception {
super.setUp();
accountService = new Mock(AccountService.class);
//在MockPrototype 要用到AccountService.class,所以这里创建了一个,不过这个不是真实的,是模拟的
mo.setAccountService((AccountService) accountService.proxy());
}
protected void tearDown() throws Exception {
super.tearDown();
mo = null;
}
public void testloginProcess() {
Account a = new Account();
a.setLoginId("aa");
a.setPassword(StringUtil.encodePassword("bb", Constants.PASSWORD_ENCODING_TYPE));
//这里模拟了 getAccount,即getAccount("aa"),返回a;在mock中没有真实的东西,都是模拟的! accountService.expects(atLeastOnce())
//注意 atLeastOnce()这个参数,这个指定使用次数,如果是
.method("getAccount")
//atLeastOnce,则这个method中则至少使用一次,否则会报错! .with(eq("aa"))
//总之,按照定义的函数调用,同时必须遵守规定,如次数! .will(returnValue(a));
//在mo的loginProcess()中,会用到这些方法
accountService.expects(atLeastOnce())
.method("getAccount")
.with(eq("cc"))
.will(returnValue(null));
mo.loginProcess("aa","bb");
try {
mo.loginProcess("cc","bb");
} catch (FrameworkdemoServiceException e) {
assertEquals(e.getMessage(),"null.lll"); //To change body of catch statement use File | Settings | File Templates.
}
}
}
posted on 2006-08-04 18:56
R.Zeus 阅读(362)
评论(0) 编辑 收藏 所属分类:
SPRING 、
Test