当前位置: 首页 > 知识库问答 >
问题:

为什么mockito在存根时调用父方法

刘辰钊
2023-03-14

为什么mockito打电话为存根方法。

为什么它使一个实际调用func下当... then返回我已经检查了当做调试。

  @Test
    public void function(){
       MyClassChild obj = mock(MyClassChild.class);
       when(obj.func("abc")).thenReturn(3);
    }
    ...
    class MyClass {
       public int func(String s) {
          if (s.equals("abc"))
             return 3;
          else
             return 1;
       }
    }

class MyClassChild extends MyCLass {

    }

共有1个答案

祁建明
2023-03-14

我尝试通过进行以下测试来重播您的问题:

public class StackTest {
    @Test
    public void mockedFunction() {
        MyClass obj = mock(MyClass.class);
        when(obj.func("abc")).thenReturn(3);

        assertEquals(3, obj.func("abc"));
    }

    @Test
    public void function() {
        MyClass obj = new MyClass();

        assertEquals(7, obj.func("abc"));
    }
}

public class MyClass {

    public int func(String s) {
        if (s.equals("abc"))
            return 7;
        else
            return 9;
    }
}

成功执行的所有测试。你能展示一下你是如何调用测试的吗?

 类似资料:
  • 问题内容: 因此,我开始为我们的Java Spring项目编写测试。 我使用的是JUnit和Mockito。有人说,当我使用when()… thenReturn()选项时,可以模拟服务,而无需模拟它们。所以我要做的是设置: 但是无论我执行哪一个子句,我总会得到一个NullpointerException,这当然是有道理的,因为input为null。 另外,当我尝试从对象模拟另一个方法时: 在那里,

  • 我必须测试一些SLSB的方法,它在当前对象上调用另一个方法(使用这个关键字),我需要以某种方式将它存根。 请考虑以下简化代码: 为了存根getSomeDBValue()方法,我可以使用@mock和@injectMocks注释将mock注入到该类,但我不知道如何正确地存根anotherMethod()。要存根它,我需要在模拟对象上做这件事,所以我尝试将引用传递到当前对象作为参数,在测试中只传递模拟对

  • 是什么导致真正的实现被调用,我如何防止它?

  • 问题内容: 我正在尝试使用Mockito 1.8.5存根方法,但是这样做会调用实际方法实现(以“”作为parm值),从而引发异常。 我尝试模拟的方法如下所示。没有最终方法或类。 我正在传递模拟的类如下所示: 是什么导致真正的实现被调用,我该如何防止呢? 问题答案: Mockito代码无法访问您正在模拟的方法。 因为测试代码和被测代码在同一程序包中,所以编译器允许您以这种方式设置模拟,但是在运行时,

  • 问题内容: 我是mockito的新手。 需要知道存根和时间之间的区别 两者之间有什么区别? 问题答案: 实际上,它们在技术上是相同的。最初创建Mockito时,我们是在谈论存根,因此词汇遵循了这个想法。后来人们认为最好是用 交互 而非 技术 术语来思考,因此词汇表遵循的是 ……当时……之后的 风格。词汇上的这种变化有助于人们思考 对象* 之间的 交互 , 消息传递 。在面向对象的语言( 引用Ala

  • 我试图通过在传入字符串“John”时返回一个用户对象来建立类(spring-data-jpa存储库)的方法。 发生的情况是,在userService中,当调用users.findbyUsername(“John”)时,它总是返回null,而不是我定义的任何用户对象: 当我在测试方法中放置断点并比较users和UserService.users时,它们是相等的。 pom版本