Mockito 不拦截间接方法调用?

问题描述 投票:0回答:1

我有以下代码片段来简单地代表该问题:

public class C2 {
    public String m1() {
        return "hello";
    }

    public String m2() {
        return this.m1();
    }

    public static void main(String[] args) {
        C2 c2 = mock(C2.class);
        Mockito.when(c2.m1()).thenReturn("world");
        System.out.println(c2.m2()); -- mockito returned null instead of "world"

我期望mockito返回的是“world”而不是null。是我错误地使用了mockito API吗?如果是这样,实现我期望的正确方法是什么?

java unit-testing mocking mockito
1个回答
0
投票

模拟上所有方法的默认返回值为 null(或基本类型的等效默认值)。如果您希望

m2()
返回一个值,您将需要对调用进行存根:

when(c2.m2()).thenReturn("world");

当然,在真正的测试中,你永远不会直接调用模拟上的方法。

© www.soinside.com 2019 - 2024. All rights reserved.