收藏 :关于WebWork2中Action的测试

一。不脱离Action配置文件的测试:
[code="java"]
public class TestBaseUploadList extends TestCase {

public void testExecuteSuccess() throws Exception {
Map session = new HashMap();
User user = new UserImpl();
user.setId(1L);
session.put(LoginInterceptor.USER_LOGIN, user);
Map params = new HashMap();
params.put("permissionsManager", new MockPermissionsManager());
Map extraContext = new HashMap();
extraContext.put(ActionContext.SESSION, session);
extraContext.put(ActionContext.PARAMETERS, params);
ActionProxy proxy = ActionProxyFactory.getFactory().createActionProxy(
"/list", "viewUploadList", extraContext, false);
assertEquals(proxy.execute(), "success");
}

public void testExecuteNoPerms() throws Exception {
Map session = new HashMap();
User user = new UserImpl();
user.setId(0L);
session.put(LoginInterceptor.USER_LOGIN, user);
Map params = new HashMap();
params.put("permissionsManager", new MockPermissionsManager());
Map extraContext = new HashMap();
extraContext.put(ActionContext.SESSION, session);
extraContext.put(ActionContext.PARAMETERS, params);
ActionProxy proxy = ActionProxyFactory.getFactory().createActionProxy(
"/list", "viewUploadList", extraContext, false);
assertEquals(proxy.execute(), "nopermission");
}

private class MockPermissionsManager implements PermissionsManager {
public Permissions getFinalUserPerm(long userID) {
return (userID == 1) ? new Permissions(Permissions.UPLOAD_LIST)
: new Permissions(0L);
}
.......
}

}
[/code]
为了使这个测试能通过,要对Jert中的Interceptor"component-autowire"做一些小小的改变:
[code="java"]
public class ComponentAutowireInterceptor implements Interceptor {
   ............
public String intercept(ActionInvocation invocation) throws Exception {
//Jert原来的实现:
//Application.getInstance().getContainer().autowireComponent(invocation.getAction());
if (Application.getInstance().getContainer() != null)
Application.getInstance().getContainer().autowireComponent(invocation.getAction());
return invocation.invoke();
}

}
[/code]

二。脱离Action配件文件的测试:
[code="java"]
public class TestBaseUploadListA extends TestCase {

public void testHasPermission() throws Exception {
Map session = new HashMap();
User user = new UserImpl();
user.setId(1L);
session.put(LoginInterceptor.USER_LOGIN, user);
ActionContext.getContext().setSession(session);
BaseUploadList action = new BaseUploadList();
action.setPermissionsManager(new MockPermissionsManager());
assertTrue(action.hasPermission());
}

public void testNoPermission() throws Exception {
Map session = new HashMap();
User user = new UserImpl();
user.setId(0L);
session.put(LoginInterceptor.USER_LOGIN, user);
ActionContext.getContext().setSession(session);
BaseUploadList action = new BaseUploadList();
action.setPermissionsManager(new MockPermissionsManager());
assertFalse(action.hasPermission());
}

private class MockPermissionsManager implements PermissionsManager {
public Permissions getFinalUserPerm(long userID) {
return (userID == 1) ? new Permissions(Permissions.UPLOAD_LIST)
: new Permissions(0L);
}
..........
}
}
[/code]

原帖地址:http://www.iteye.com/topic/12406

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值