[英]Mocking if condition using Mockito in springboot
我如何在 spring 引导中使用 Mockito 来模拟这种情况。
@Autowired
private Config config;
if (!config.getAllowedFileFormats().contains(FilenameUtils.getExtension(multipartFile.getOriginalFilename()) {
}
我尝试使用它,但这似乎不起作用。
@Mock
private Config config; Mockito.when(config.getAllowedFileFormats().contains(Mockito.anyString())).thenReturn(Boolean.valueOf(true));
任何解决方案。
从功能上讲,您的代码与以下代码完全相同:
static class SomeClass {
@Autowired
private Config config;
void method(MultipartFile multipartFile) {
String filename = multipartFile.getOriginalFilename();
Set<String> allowedFormats = config.getAllowedFileFormats();
if (!allowedFormats.contains(FilenameUtils.getExtension(filename))) {
}
}
}
所以你可以:
模拟链中的每个方法:
@Test
void test() {
Set<String> allowedFormats = new HashSet<>();
allowedFormats.add(".exe");
MultipartFile multipartFile = /* get your file here */ ;
Mockito.when(multipartFile.getOriginalFilename()).thenReturn("some.exe");
Mockito.when(config.getAllowedFileFormats()).thenReturn(allowedFormats);
myClass.method(multipartFile);
//verify
}
您也可以 static mock FilenameUtils.getExtension(
但我认为这毫无意义,因为它是一个没有副作用的助手。
或者您可以将其提取到一个单独的方法中,然后对其进行模拟。
@Test
void test() {
SomeClass myClassSpy = Mockito.spy(new SomeClass());
MultipartFile multipartFile = /* get your file here */ ;
Mockito.when(myClassSpy.verifyAllowedFormat(multipartFile)).thenReturn(true);
myClassSpy.method(multipartFile);
//verify
}
static class SomeClass {
@Autowired
private Config config;
void method(MultipartFile multipartFile) {
if (!verifyAllowedFormat(multipartFile);) {
}
}
boolean verifyAllowedFormat(MultipartFile file) {
return config.getAllowedFileFormats()
.contains(FilenameUtils.getExtension(multipartFile.getOriginalFilename()));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.