java - Mockito:如何在不模拟所有参数的情况下轻松 stub 方法

标签 java unit-testing mocking mockito stubbing

我有一个我想 stub 的方法,但它有很多参数。 我怎样才能避免模拟所有参数但仍然 stub 方法。

例如:

//Method to stub
public void myMethod(Bar bar, Foo foo, FooBar fooBar, BarFoo barFoo, .....endless list of parameters..);

最佳答案

我不太了解您在使用 Mockito 时遇到了什么问题。假设您创建了一个包含 myMethod() 方法的接口(interface)的模拟,然后您可以只验证您感兴趣的方法的参数。例如(假设接口(interface)称为 MyInterface 并使用 JUnit 4):

@Test
public void test() {
    MyInterface myInterface = mock(MyInterface.class);
    FooBar expectedFooBar = new FooBar();        

    // other testing stuff

    verify(myInterface).myMethod(any(), any(), eq(expectedFooBar), any(), ...);
}

您需要对 Mockito 方法进行静态导入才能使其正常工作。 any() 匹配器不关心验证时传递了什么值。

你不能避免为你的方法中的每个参数传递一些东西(即使它只是 NULL)。

关于java - Mockito:如何在不模拟所有参数的情况下轻松 stub 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340801/

相关文章:

visual-studio - 有没有办法配置 Resharper 建议的变量名?

unit-testing - NSubstitute:无法模拟与没有相应 setter 的成员变量关联的语法糖 getter 方法

java - Java JVM 中的信号量处理和线程控制

unit-testing - 测试概率函数

unit-testing - Grails String.encodeAsBase64() 在 Spock 测试中失败

android - 如何向下滚动并单击带有 Espresso 测试的按钮?

PHPUnit - 创建 Mock 对象作为属性的 stub

java - 将二维数组中的一串字符打印到一定数量的行中

java - 使用 JAVA 使用 XPATH 将 xml 值存储为 Map

java - 在 OpenGL 中制作 2D 地形的问题