我是Spring webflux的新手,我刚刚开始webflux项目,并且被困在一个地方。
我正在使用Id和FileName创建一个学生对象。
当我在studentService上调用deleteById(Long)方法时,我想先从存储中删除文件,然后再从Repository,]中删除记录。
所有这些方法都将返回Mono
下面是我给带服务和存储库的学生的代码
public class Student { private Long id; private String fileName; //getter & setter } public class StudentRepository { public Mono<Student> findById(long l){ Student sample = new Student(); sample.setFileName("file-name"); sample.setId(1L); return Mono.just(sample); } public Mono<Void> deleteFile(String fileName) { return Mono.empty(); } public Mono<Void> deleteById(Long id) { return Mono.empty(); } } public class StudentService { private StudentRepository repository; public void setRepository(StudentRepository repository) { this.repository = repository; } public Mono<Student> findById(long l){ Student sample = new Student(); sample.setFileName("file-name"); sample.setId(1L); return Mono.just(sample); } public Mono<Void> deleteById(Long id){ return repository.findById(id) .flatMap(student -> repository.deleteFile(student.getFileName()).thenReturn(student) ) .flatMap(studentMono -> repository.deleteById(studentMono.getId()) ); } }
现在,我要确认从文件存储中删除了第一个文件,然后应从数据库中删除记录。
我写了如下测试
public void test(){ StudentService studentService = new StudentService(); StudentRepository studentRepository = mock(StudentRepository.class); studentService.setRepository(studentRepository); Student student = new Student(); student.setFileName("file-name"); student.setId(1L); Mono<Student> studentMono = Mono.just(student); Mockito.when(studentRepository.findById(1L)).thenReturn(studentMono); studentService.deleteById(1L); StepVerifier.create(studentMono) .expectNextMatches(leadImport->leadImport.getFileName().equals("file-name")) .expectNextMatches(leadImport -> leadImport.getId() == 1L) .verifyComplete(); }
但是有些测试失败了。
[有人可以帮我如何验证我所有的预期步骤吗
我是Spring webflux的新手,我刚刚开始webflux项目,但是我被困在一个地方。我正在使用ID和FileName创建一个Student对象。当我在...