当前位置: 首页 > 面试题库 >

如何在Java中模拟单个方法

池兴邦
2023-03-14
问题内容

是否可以模拟Java类的单个方法?

例如:

class A {
    long method1();
    String method2();
    int method3();
}


// in some other class
class B {
    void someMethod(A a) {
       // how would I mock A.method1(...) such that a.method1() returns a value of my
       // choosing;
       // whilst leaving a.method2() and a.method3() untouched.
    }
}

问题答案:

使用Mockito's间谍机制

A a = new A();
A aSpy = Mockito.spy(a);
Mockito.when(aSpy.method1()).thenReturn(5l);

间谍的使用将为未存根的任何方法调用包装对象的默认行为。

Mockito.spy() /
@间谍



 类似资料:
  • 我在我的类中有一个方法,如下所示,我试图测试它: 在上面,是一个方法,它将文件名作为参数。它从AWS S3中获取该文件的inputstream。在测试Spock的方法时,我希望为方法提供一个模拟,因为我不想使用类中的这个方法的实现,因为它转到了另一个bucket名称。

  • 问题内容: 我有一个类,我正在为应该执行以下操作的方法编写测试: 1)它应该调用静态方法上 2)它应该从子类方法填充变量 3)它应该从传递String参数的最终帮助器类中调用静态方法 4)它应该在blockList中调用每个的run方法 到目前为止,我有这个空方法: 我正在使用JUnit,Mockito来模拟对象,并且尝试使用PowerMockito来模拟静态类和最终类(Mockito不能这样做)

  • 模拟由某个类实现的接口方法很容易,但如果有一个类并且有一个静态方法,那么我们如何借助easymock对其进行模拟呢?? supose是一个a类,有一个void retruned方法作为公共静态void methodA(一些参数…){} 我们如何在EasyMock的帮助下模仿A的方法methodA

  • 我试图用Kotlin中的jMockit模拟一个静态方法: 但我得到以下错误:

  • 我正在尝试easyMock测试几个类/接口方法。方法,试图捕获参数,但得到一个或另一个错误。如果我只记录了一个期望值,它甚至不会捕获参数管道中的任何内容,如果我使用以下方法,我会得到如下错误代码。 结果是错误的 testFireChannelInitializer(com.obolus.generic.impl.DefaultChannelListenerTest)运行时间:3.812秒 你知道怎

  • 我试图使用下面的代码模拟方法,但我得到了异常,而且我是单元测试的新手