当前位置: 首页 > 知识库问答 >
问题:

mockito-返回与传入方法相同的对象

谷梁浩思
2023-03-14
public SomeEntity makeSthWithEntity(someArgs){
    SomeEntity entity = new SomeEntity();
    /**
     * here goes some logic concerning the entity
     */
    return repository.merge(entity);
}
when(repository.merge(any(SomeEntity.class))).thenReturn(objectPassedAsArgument);

然后mocked repository返回makessthwithEntity传递给它的内容,我可以轻松地测试它。

有什么想法吗?如何强制mockito返回objectpassedasargument

共有1个答案

何兴邦
2023-03-14

您可以实现答案然后改用ThenAnswer()

类似于:

when(mock.someMethod(anyString())).thenAnswer(new Answer() {
    public Object answer(InvocationOnMock invocation) {
        return invocation.getArguments()[0];
    }
});

当然,一旦有了这些,您就可以将答案重构为一个可重用的答案,称为ReturnFirstArgument或类似的答案。

 类似资料:
  • 问题内容: 我在Mockito中有这个: 该方法应始终返回一个新实例,但它会返回两次相同的引用。 为什么该方法不返回新值? 问题答案: 该方法将始终返回传递给它的内容。该代码是在调用之前执行的。然后将创建的内容传递给。因此有一个绝对的实例而不是创建机制。 如果需要提供新实例,请使用thenAnswer

  • 我有以下代码: 问题:是否可以替换 d - *我对这个问题的标题不太清楚-如果有问题,请编辑。 谢啦

  • 问题内容: 有没有一种方法可以使存根方法在后续调用中返回不同的对象?我想这样做是为了测试来自的不确定响应。即,不管方法的返回顺序如何进行测试,结果都保持恒定。 我要测试的代码看起来像这样。 问题答案: 你可以使用方法来做到这一点(与链接时): 或使用等效的静态doAnswer方法:

  • 我有一个java方法,它返回一个

  • 我试图模拟一个对象,该对象返回一个带有Mockito的Java可选对象: 当被调用,它返回。 我希望方法返回 返回的任何原因? 方法如下: 以下是Junit:

  • 当我用mockito模拟它并在以下情况下使用该方法时: 我得到了错误: 无法解析方法“then return(java.lang.String)” 但是上面返回的是可选的'<'object'>'和非可选的'<'string'>的实例。 为什么我不能直接返回一个可选的'<'string'>'实例呢?如果可以的话,我该怎么做呢?