java - Mockito:如何使用模拟函数的参数?

标签 java mocking mockito

我正在使用 Mockito 并想做一些类似的事情:

Mockito.doReturn(new MyObject(capturedParameter))
    . when(mockedCreatorInstance).findByParameter(anyString())

所以当有人调用方法mockedCreatorInstance.findByParameter("XXXX")时,返回的值将是 new MyObject("XXXX") .

如您所见,mockedCreatorInstance 的模拟方法签名,将是

MyObject findByParameter(String parameter);

我尝试使用 ArgumentCaptor<String> 进行一些操作但失败了。

我应该怎么做才能让它发挥作用?

最佳答案

Mockito 文档建议在 stub 而不是验证时不要使用 ArgumentCaptor<>。

我相信您可以通过以下答案实现您想要的目标:

when(mockedCreatorInstance.findByParameter(anyString()))
    .thenAnswer(new Answer<MyObject>() {
        public MyObject answer(InvocationOnMock invocation) {
            Object[] args = invocation.getArguments();
            return new MyObject((String) args[0]);
        }});

关于java - Mockito:如何使用模拟函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44338384/

相关文章:

java - 等待 0 延迟的预定 future 的最佳方式是什么?

unit-testing - 测试时模拟 Gradle 插件使用的类

java - Spring Security 中用于身份验证的模拟对象

android - 为什么在内联创建mockito模拟时我会看到性能提升?

java - 使用mockito在函数中存在具有setter getter方法的模拟类对象

java - 十进制格式舍入模式产生不一致的值

java - 这是我的代码。在这种情况下,它将输出显示为不等于。但是如果我传递小于 128 的输入,那么它将输出为 Equal

java - 找不到规则 'rulesets/plsql/codesize.xml' 的资源 'NPathComplexity'

python - 类型错误 : unbound method when trying to mock a classmethod

java - Mockito 如何仅模拟父类(super class)方法的调用