EasyMock和Spring RetryTemplate
我有一个使用RetryTemplate的类EasyMock和Spring RetryTemplate,spring,junit,easymock,Spring,Junit,Easymock,我有一个使用RetryTemplate的类 class UnderTest{ private RetryTemplate retry; public List<String> something(String param){ retry.execute(new RetryCallback<List<String>>(){ @Override public List<Str
class UnderTest{
private RetryTemplate retry;
public List<String> something(String param){
retry.execute(new RetryCallback<List<String>>(){
@Override
public List<String> doWithRetry(RetryContext context) throws Exception {
return doSomething(param);
}
});
}
}
被测类{
私有RetryTemplate重试;
公共列表(字符串参数){
retry.execute(new RetryCallback()){
@凌驾
公共列表doWithRetry(RetryContext上下文)引发异常{
返回剂量测定(参数);
}
});
}
}
现在我想要使用EasyMock的mock-RetryTemplate,实际上流是这样的(显然我不想测试RetryTemplate):
被测类{
私有RetryTemplate重试;
公共列表(字符串参数){
返回剂量测定(参数);
}
}
如何使用EasyMock做到这一点?我认为在“透明”的情况下,只需向类中注入如下内容即可:
RetryTemplate retryTemplate = new RetryTemplate();
retryTemplate.setRetryPolicy(new NeverRetryPolicy());
underTest.setRetryTemplate(retryTemplate);
underTest.something("foo");
没有任何嘲弄。谢谢。是的,这很好,但有时候解决方案并不是那么简单,你们想嘲笑的不止这些。您的意思可能是:
retry.setRetryPolicy(新的SimpleRetryPolicy)(1,集合。NeverRetryPolicy
更好。我修正了我的答案。我刚刚尝试修正了你的具体问题。当然,在大多数情况下,我们应该模拟很多,但你的用例不会处理这些模拟。当然,你可以存根RetryTemplate。执行,然后用mock从那里调用RetryCallback
RetryContext
RetryTemplate retryTemplate = new RetryTemplate();
retryTemplate.setRetryPolicy(new NeverRetryPolicy());
underTest.setRetryTemplate(retryTemplate);
underTest.something("foo");