【发布时间】:2021-10-13 18:05:47
【问题描述】:
您好,我正在尝试测试服务层。我已经为ConverterFactory 编写了测试。我想我需要ConverterServiceImpl 使用的模拟依赖类,但我仍然得到NullPointerException
这是我的服务类
@Service
@RequiredArgsConstructor
public class ConverterServiceImpl implements ConverterService {
ConverterFactory factory = new ConverterFactory();
private final WebLinkRepository webLinkRepository;
private final DeepLinkRepository deepLinkRepository;
@Override
public DeepLinkResponse toDeepLink(WebLinkRequest webLinkRequest) {
WebLink webLink;
String url = webLinkRequest.getUrl();
Converter converter = factory.getConverter(url);
webLink = new WebLink();
webLink.setUrl(url);
String convertedUrl = converter.toDeepLink(url);
webLink.setConvertedUrl(convertedUrl);
webLinkRepository.save(webLink);
return new DeepLinkResponse(convertedUrl);
}
}
这就是测试
@RunWith(MockitoJUnitRunner.class)
public class ConverterServiceImplTest {
@InjectMocks
ConverterServiceImpl converterService;
@Mock
WebLinkRepository webLinkRepository;
@Mock
DeepLinkRepository deepLinkRepository;
@Mock
ConverterFactory converterFactory;
@Mock
ProductConverter productConverter;
@Mock
WebLinkRequest webLinkRequest;
@BeforeAll
void init(){
webLinkRequest.setUrl(WEBLINK_ONLY_PRODUCT);
}
@Test
public void toDeepLink_only_content_id() {
ConverterFactory converterFactory = mock(ConverterFactory.class);
when(converterFactory.getConverter(any())).thenReturn(productConverter);
DeepLinkResponse deepLinkResponse = converterService.toDeepLink(webLinkRequest);
assertEquals(deepLinkResponse.getUrl(),"ty://?Page=Product&ContentId=1925865");
}
}
此代码抛出错误说。我在这里做错了什么?:
java.lang.NullPointerException
at com.example.converter.service.factory.ConverterFactory.getConverter(ConverterFactory.java:13)
【问题讨论】: