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

标签 java mockito

我有一个返回不同字符串的类。我希望能够 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/

相关文章:

java - 使用 Mockito 模拟另一个 EJB 中的 EJB

java - 在java命令行中获取多行输入

java - 在java中跨多个数据存储处理事务的方法是什么?

unit-testing - 使用 Mockito 模拟一个方法

unit-testing - 如何获得在 Mockito 中调用模拟的次数

eclipse - Jersey 模拟异常

java - 如何在服务层单元测试中模拟数据库结果?

java:在运行时编译继承类

java - xs :integer produces @XmlElement with "type=String.class" 上的 JAXB javaType 自定义

java - 消除接受不同功能接口(interface)的重载方法的歧义