【问题标题】:I'm trying to mock Jersey WebResource with Mockito, and can't do it我正在尝试用 Mockito 模拟 Jersey WebResource,但做不到
【发布时间】:2010-10-08 13:24:32
【问题描述】:

这是我的代码(Jersey 1.4 + Mockito 1.8.5):

import org.junit.Test;
import static org.junit.Assert.*;
import com.sun.jersey.api.client.WebResource;
import static org.mockito.Mockito.*;
public FooTest {
  @Test public shouldMakeAHttpCall() {
    WebResource wr = mock(WebResource.class);
    doReturn(wr).when(wr).accept(anyVararg());
    doReturn("some text").when(wr).get(String.class);
  }
}

编译器说:

cannot find symbol: method accept(java.lang.Object)
location: class com.sun.jersey.api.client.WebResource

anyVargarg() 有问题,但究竟是什么?

【问题讨论】:

  • 不会嘲笑泽西岛。 MTV 已经为我们解决了这个问题。
  • 请注意,WebResource.accept 不返回 WebResource 对象,它返回一个 WebResource.Builder。我同意你的观点,但 anyVargarg() 是问题所在。

标签: java unit-testing generics jersey mockito


【解决方案1】:

这是解决方案:

doReturn(wr).when(wr).accept((MediaType) anyVararg());

【讨论】:

  • 演员阵容是关键。即使这样施法看起来很不自然。谢谢。
【解决方案2】:

你试过了吗:

WebResource wr = mock(WebResource.class);
when(wr.accept(anyObject())).thenReturn(wr);
when(wr.get(anyString()).thenReturn("some text");

【讨论】:

  • 也许可以试试 anyObject() 而不是 anyVararg()。刚刚编辑了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 2022-01-15
  • 2022-07-24
  • 2017-06-17
相关资源
最近更新 更多