模拟方法仍然调用真正的方法

时间:2016-12-23 00:00:33

标签: java junit easymock

我使用 easymock 模拟了请求和响应,但它仍然通过请求方法中的每一行并获得异常。

例如:

public class helper{

public String getCB(){
  Response response = serviceImpl.getDefaultMethod(request);
  return response.getString();
}

测试:

expect(MockServiceImpl.getDefaultMethod(mockRequest)).andReturn(mockResponse);

获得例外,它进入getDefaultMethod()

我不明白为什么它会通过该方法中的代码。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

AFAIK easymock无法模拟静态方法调用。

你应该移动

Response response = ServiceImpl.getDefaultMethod(request);

退出方法并模拟request

另一种方法是使用PowerMock,但恕我直言,这是对糟糕设计的投降。

答案 1 :(得分:0)

如果方法不是静态的而不是最终的,它应该可以工作。

如果它没有,则意味着你没有在模拟上调用此方法,而是在类的实际实例上调用此方法。向我们展示模拟创建和注射将帮助我们确认。