Spring boot のserviceクラスのテストで、メソッド内でインスタンス化してRepositoryにsaveした時の
verifyの仕方がわからないです。
Java
1@Entity 2@Data 3public class FileEntity { 4 @Id 5 @GeneratedValue(strategy=GenerationType.AUTO) 6 private Integer id; 7 8 @Transient 9 private MultipartFile file; 10 11 private String base64_str; 12 13 @ManyToOne(cascade=CascadeType.ALL) 14 private Blog blog; 15} 16@Service 17public class UploadFileService { 18 @Autowired 19 private FileRepository fileRepository; 20 21 public void saveFile(List<MultipartFile> mfiles,Blog blog) { 22 for(MultipartFile file:mfiles) { 23 if(!file.isEmpty()) { 24 FileEntity fileE=new FileEntity(); 25 fileE.setBlog(blog); 26 try { 27 StringBuffer data = new StringBuffer(); 28 String base64 = new String(Base64.encodeBase64(file.getBytes()),"ASCII"); 29 data.append("data:image/jpeg;base64,"); 30 data.append(base64); 31 fileE.setBase64_str(data.toString()); 32 fileRepository.save(fileE); 33 } catch (IOException e) { 34 e.printStackTrace(); 35 } 36 }else { 37 FileEntity fileE=new FileEntity(); 38 fileE.setBlog(blog); 39 fileRepository.save(fileE); 40 } 41 } 42 } 43 44public interface FileRepository extends JpaRepository<FileEntity, Integer>{}
UploadFileServiceクラスsaveFile()メソッド内でfileEをインスタンス化してリポジトリに保存しているのですが
テストの時にどう書いたらいいのかわからないです。
試しに書いたテストコードが下記になります。
java
1@SpringJUnitConfig 2public class UploadFileServiceTest { 3 @TestConfiguration 4 static class Config{ 5 @Bean 6 public UploadFileService uploadFileService() { 7 return new UploadFileService(); 8 } 9 } 10 @Autowired 11 private UploadFileService uploadFileService; 12 13 @MockBean 14 private FileRepository fileRepository; 15 16 @Test 17 public void testSaveFile() { 18 Blog blog=new Blog(); 19 FileEntity file=new FileEntity(); 20 List<MultipartFile> files=new ArrayList<>(); 21 files.add(new MockMultipartFile("file", "test.text","text/plain","Spring Framework".getBytes())); 22 uploadFileService.saveFile(files,blog); 23 verify(fileRepository).save(file); 24 } 25}
UploadFileServiceクラスのsaveFileメソッドを呼び出して引数にファイルとブログオブジェクトを渡したらfileRepositoryクラスのsaveメソッドが呼び出されることをテストしたいのですが、
上記テストコードだと「fileとsaveFileされたオブジェクトは違うものです」って出ます。
uploadFileService.saveFile(files,blog)でインスタンス化されたオブジェクトを取り出してsave()に入れたらいいと思うのですが、どう書けばいいのかわからないです。
ご教授宜しくお願い致します。
開発環境
spring boot 2.2.12
java 8
mariaDB 10.4.17
回答1件
あなたの回答
tips
プレビュー