gpt4 book ai didi

java - 如何在同一个模拟类中 stub 所有方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:47 25 4
gpt4 key购买 nike

我有一个返回不同字符串的类。我希望能够 stub 此类中的所有方法,而不必显式 stub 每个方法。 Mockito 是否有正则表达式 stub ?

谢谢

最佳答案

您可以实现 Answer 接口(interface)来执行您想要的操作。这是一个测试用例,展示了它的实际效果:

package com.sandbox;

import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;

public class SandboxTest {

@Test
public void testMocking() {
Foo foo = mock(Foo.class, new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
String name = invocation.getMethod().getName();
if (name.contains("get")) {
return "this is a getter";
}
return null;
}
});

assertEquals("this is a getter", foo.getY());
assertEquals("this is a getter", foo.getX());
}

public static class Foo {
private String x;
private String y;

public String getX() {
return x;
}

public void setX(String x) {
this.x = x;
}

public String getY() {
return y;
}

public void setY(String y) {
this.y = y;
}
}

}

如果需要,您可以使用正则表达式匹配器,而不是使用 contains

关于java - 如何在同一个模拟类中 stub 所有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17732461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com