首页 > 解决方案 > 如何从流利的接口方法返回相同的模拟

问题描述

假设我有以下代码:

public class OuterClass {

    @Inject
    InjectedClass injected;

    public void method() {
        injected
            .methodA()
            .methodB()
            .methodC();
    }
}

以及以下测试:

@RunWith(MockitoJUnitRunner.class)
public class OuterClassTest{

    @InjectMocks
    OuterClass outer;

    @Mock
    InjectedClass injected;

    @Test
    public void testMethod() {
        outer.method();
        verify(injected).methodA();
        verify(injected).methodB();
        verify(injected).methodC();
    }
}

有没有办法告诉 Mockito 从每个方法调用中返回相同的模拟InjectedClass?我尝试使用@Mock(answer = Answers.RETURNS_DEEP_STUBS),但在这种情况下,Mockito 似乎从每个方法调用中返回一个新的模拟。这意味着 thatverify(injected).methodA()会通过,但不会通过methodB()and methodC(),因为它们是在不同的模拟上调用的。

目前我必须有这样的setUp()方法:

when(injected.methodA()).thenReturn(injected);
when(injected.methodB()).thenReturn(injected);
when(injected.methodC()).thenReturn(injected);

...这是丑陋和讨厌的。你知道更好的方法吗?

标签: javamockingmockitofluent

解决方案


推荐阅读