使用 Mockito 模拟具有泛型参数的类
有没有一种用泛型参数模拟类的干净方法?假设我必须模拟一个类,我需要将其传递到一个期望.我可以很容易地做到以下几点:Foo<T>Foo<Bar>
Foo mockFoo = mock(Foo.class);
when(mockFoo.getValue).thenReturn(new Bar());
假设返回泛型类型 。但是,当我稍后将其转换为期望的方法时,这将有小猫。选角是做到这一点的唯一手段吗?getValue()TFoo<Bar>
有没有一种用泛型参数模拟类的干净方法?假设我必须模拟一个类,我需要将其传递到一个期望.我可以很容易地做到以下几点:Foo<T>Foo<Bar>
Foo mockFoo = mock(Foo.class);
when(mockFoo.getValue).thenReturn(new Bar());
假设返回泛型类型 。但是,当我稍后将其转换为期望的方法时,这将有小猫。选角是做到这一点的唯一手段吗?getValue()TFoo<Bar>
我认为你确实需要投射它,但它不应该太糟糕:
Foo<Bar> mockFoo = (Foo<Bar>) mock(Foo.class);
when(mockFoo.getValue()).thenReturn(new Bar());
解决此问题的另一种方法是改用注释。并非在所有情况下都有效,但看起来:)@Mock
下面是一个示例:
@RunWith(MockitoJUnitRunner.class)
public class FooTests {
@Mock
public Foo<Bar> fooMock;
@Test
public void testFoo() {
when(fooMock.getValue()).thenReturn(new Bar());
}
}
MockitoJUnitRunner初始化用@Mock注释的字段。