java - 如何根据参数属性在 Mockito 中返回不同的值?

标签 java mockito

我测试的类接收客户端包装器:

测试类(片段)

private ClientWrapper cw
public Tested(ClientWrapper cw) {
    this.cw = cw;
}

public String get(Request request) {
    return cw.getClient().get(request);
}

测试初始化​​:

ClientWrapper cw = Mockito.mock(ClientWrapper.class);
Client client = Mockito.mock(Client.class);
Mockito.when(cw.getClient()).thenReturn(client);
//Here is where I want to alternate the return value:
Mockito.when(client.get(Mockito.any(Request.class))).thenReturn("100");

在示例中,我总是返回“100”,但是请求有一个属性 id,我想返回不同的值给 client.get(Request)request.getId() 值上。

我该怎么做?

最佳答案

您可以使用 Mockito 的答案,而不是:

Mockito.when(client.get(Mockito.any(Request.class))).thenReturn("100");

写:

Mockito.when(client.get(Mockito.any(Request.class)))
 .thenAnswer(new Answer() {
   Object answer(InvocationOnMock invocation) {
     Object[] args = invocation.getArguments();
     Object mock = invocation.getMock();
     return "called with arguments: " + args;
   }
});

关于java - 如何根据参数属性在 Mockito 中返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37097293/

相关文章:

java - 使用 Mockito 单独测试 Fragment 类

java - 在 junit 5 中测试类中的 stub 私有(private)方法,PowerMock 不适用于 JUnit5

java - 如何将 SpringBootTest 与 Web 安全和 Service usnig Junit5 和 Mockito 结合使用?

java - 使用 Mockito 进行单元测试时出现空指针

Java REST api http方法类型来调用执行sql删除查询的存储过程

Java - 俄语字符串和 JTextField,将字符串更改为 "????..."

java - 我想知道我的结构是否适合我所做的应用程序

java - 使用 Objectify 模拟框架?

java - 如何在Java swing中从另一个类禁用一个类中的多个JButton?

java - Android - 使用 RxAndroid 进行 Robolectric 测试?