【问题标题】:Access the original object instead of returning in powermock-mockito?访问原始对象而不是在 powermock-mockito 中返回?
【发布时间】:2013-03-20 06:20:48
【问题描述】:

让我们举个例子(注意我使用的是 PowerMock - Mockito)

Class A {

public void method1(Object obj)
{

}

}

现在,当我们使用 mockito 时,我们有类似 when(A.method1(obj2)).thenReturn(obj3); 的 api。 我们可以在测试用例中访问传递给 method1 的原始对象 obj,而不是在调用方法时返回自定义对象 obj3 吗?

【问题讨论】:

标签: junit mocking mockito powermock


【解决方案1】:

您需要使用thenAnswer()。我相信签名应该是

public Object method1(Object obj) 

不确定为什么要将相同的对象返回到您从测试中通过的测试中。在这种情况下,您实际上要测试什么?

更新

看起来你要找的是ArgumentCaptor

ArgumentCaptor<Object> captor = ArgumentCaptor.forClass(Object.class);
verify(a).method1(captor.capture());
Object realObject = captor.getValue()

【讨论】:

  • 但是 thenAnswer 只有当我通过我的测试代码调用它时才会起作用,我在测试真实代码时想要实时对象。
  • @user2181531 如果您正在寻找一些东西来获取在被测类调用您的模拟时创建的对象,那么请查看我更新的答案。
  • 我得到了,实际上与这个模拟的交互为零,异常。
  • @user2181531 如果您可以发布您的被测类和测试代码会更容易
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 2014-12-28
相关资源
最近更新 更多