如何在Java中轻松模拟静态方法?
我正在使用Spring 2.5和JUnit 4.4
@Service
public class SomeServiceImpl implements SomeService {
public Object doSomething() {
Logger.getLogger(this.class); //a static method invoked.
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我不控制我的服务需要调用的静态方法,所以我不能将它重构为更可单元测试.我使用Log4J Logger作为示例,但真正的静态方法类似. 不能更改静态方法.
做Grails工作,我习惯使用类似的东西:
def mockedControl = mockFor(Logger)
mockControl.demand.static.getLogger{Class clazz-> … }
…
mockControl.verify()
Run Code Online (Sandbox Code Playgroud)
我如何在Java中做类似的事情?
我有一个现有的Grails Web应用程序正在生产中并且有30分钟的会话超时.我们正在运行Tomcat(tcServer).
当用户通过身份验证并在某些页面上时,我想要定期轮询对服务器的ajax请求,这些请求不会延长这个30分钟的会话超时 - 这样我们的会话超时就不会被阻止.
问题类似于这个未经回答的asp.net问题,但是在Java/Tomcat领域中没有任何答案可以做到这一点.
如何在不重置tomcat的会话超时的情况下执行经过身份验证的AJAX请求?
是否存在某种过滤器或URL匹配机制,我可以使用它来排除延长会话超时的请求?