Я понимаю, что есть много очень похожих вопросов. Я прошел через все из них, и все еще не могу заставить мой код работать.
У меня есть служба, определенная в моем приложении Spring-Boot, вот так:
@Service
public class FileStorageService {
private final Path fileStorageLocation;
@Autowired
public FileStorageService(final FileStorageProperties fileStorageProperties) {
//FileStorageProperties is a very simple class that right now just holds one String value
this.fileStorageLocation = Paths.get(fileStorageProperties.getUploadDir())
.toAbsolutePath()
.normalize();
try {
Files.createDirectories(fileStorageLocation);
} catch (IOException e) {
// FileStorageException is my custom, runtime exception
throw new FileStorageException("Failed to create directory for stored files", e);
}
}
}
И я Я хочу протестировать сценарий, когда создание каталога не удается, и поэтому мне нужно смоделировать метод Files.createDirectories (). Мой тестовый класс выглядит следующим образом:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import java.io.IOException;
import java.nio.file.Files;
@RunWith(PowerMockRunner.class)
@PrepareForTest({Files.class})
public class FileStorageServiceTest {
private static final String UPLOAD_DIR = "uploadDir";
@Test(expected = FileStorageException.class)
public void some_test() throws IOException {
PowerMockito.mockStatic(Files.class);
PowerMockito.when(Files.createDirectories(Mockito.any())).thenThrow(new IOException());
new FileStorageService(createFileStorageProperties());
}
private FileStorageProperties createFileStorageProperties() {
final FileStorageProperties fileStorageProperties = new FileStorageProperties();
fileStorageProperties.setUploadDir(UPLOAD_DIR);
return fileStorageProperties;
}
}
Я считаю, что следовал каждому шагу из уроков и вопросов, которые я прочитал. Я использую:
- @ RunWith (PowerMockRunner.class),
- @ PrepareForTest ({Files.class}),
- PowerMockito.mockStati c (файлы .class),
- и PowerMockito.when (Files.createDirectories (Mockito.any ())). thenThrow (new IOException ());.
Тем не менее исключение не существует бросили во время теста, и это не удалось. Буду очень благодарен за помощь, потому что я чувствую, что скучаю по чему-то очень простому и просто не вижу этого.