如何模拟a.getTypeA().getTypeB();

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

AClass a=new AClass() ; a.getTypeA().getTypeB();

我已经使用模拟构造函数来模拟 AClass 方法,但如何模拟 getTypeB();方法

我能够模拟 A 类,但对于 B 类,它调用真实的方法。 方法 getTypeB() 具有 TypeB 类。

java spring-boot unit-testing mockito junit5
1个回答
0
投票

这可能不是最干净的方法,但您需要确保您引用的每个对象也被模拟。您可以通过使用 Mockito 的 when() 方法构建模拟对象来做到这一点。

您应该能够在测试中执行以下操作:

@SpringBootTest
public class AClassTest {

    @Mock
    private AClass a;

    @Mock
    private TypeA typeA;

    @Mock
    private TypeB typeB;

    @Autowired
    private YourController yourController;

    @Test
    void testControllerInSomeWay() {

        when(typeA.getTypeB()).thenReturn(typeB);
        when(a.getTypeA()).thenReturn(typeA);

        yourController.useAClassInSomeWay(a);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.