【问题标题】:Mocked method still calls the real methodmocked 方法仍然调用真实方法
【发布时间】:2016-12-23 00:00:32
【问题描述】:

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

例如:

public class helper{

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

测试:

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

得到一个异常,它进入getDefaultMethod()

我不明白为什么它会以该方法遍历代码。谁能帮帮我?

【问题讨论】:

标签: java junit easymock


【解决方案1】:

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

你应该移动这条线

Response response = ServiceImpl.getDefaultMethod(request);

退出方法并模拟request

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

【讨论】:

  • getDefaultMethod 不是静态的
  • "getDefaultMethod is not static" 但您使用静态访问(在编辑之前和您的测试示例中仍然)
【解决方案2】:

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

如果没有,则表示您不是在模拟上调用此方法,而是在类的真实实例上调用此方法。向我们展示模拟创建和注入将帮助我们确认这一点。

【讨论】:

    猜你喜欢
    • 2012-12-23
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    相关资源
    最近更新 更多