如何以类型安全的方式模拟泛型类型?

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

是否有更多类型安全的替代方案(除了模拟泛型类型的非泛型子类型)?

@SuppressWarnings("unchecked")
@Test
void test() {
    GenericType<ImportantTypeArgument> genericType = mock(GenericType.class);
    // the rest of the test
}

更具体的例子:

@Test
@SuppressWarnings("unchecked")
void getHeadersFilter_ifNull_delegatesToInjectedObjectProvider() {
    HttpHeadersFilter filterMock = mock(HttpHeadersFilter.class);
    // this line includes an unchecked cast   
    ObjectProvider<List<HttpHeadersFilter>> headersFiltersProviderMock = mock(ObjectProvider.class);
    given(headersFiltersProviderMock.getIfAvailable()).willReturn(List.of(filterMock));
    // the rest of the test
}
java testing mockito
1个回答
0
投票

较新版本的 Mockito 有“神奇”

mock()
方法,可以自动推断 Mock 的类型:

final GenericType<ImportantTypeArgument> genericType = mock();

此方法重载实际上接受一个可变参数数组(在这种特定情况下具有零个元素)。即使没有提供实际参数,编译器也可以选择数组的类型。

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