简体   繁体   English

我在Mockito的删除方法有问题

[英]I have problems with the delete method in Mockito

public class BookControllerTest {
    int ID=2;
    int RELEASE=22;
    String AUTHOR="HOMERO";
    String TITLE="LA ODISEA";
    Book BOOK = new Book();
    Optional<Book> OPTIONAL_BOOK = Optional.of(BOOK);
    List<Review>REVIEW_LIST = new ArrayList<>();
    Optional<Book> OPTIONAL_BOOK_EMPTY = Optional.empty();
    /*Optional<Book> OPTIONAL_BOOK_DELETE = Optional.deleted();->error*/
    
    @Mock
    private BookRepository bookRepository;
    @InjectMocks
    private BookController bookController;
        
    ...

    @Test
    public void testDeleteBook() {
        Mockito.when(bookRepository.findById(ID)).thenReturn(OPTIONAL_BOOK_DELETE);
        ResponseEntity<Object> httpresponse = bookController.deleteBook(ID);
        assertEquals(HttpStatus.OK, httpresponse.getStatusCode());
    }
    
    @Test
    public void testDeleteBookNotFound() {
        Mockito.when(bookRepository.findById(ID)).thenReturn(OPTIONAL_BOOK_EMPTY);
        ResponseEntity<Object> httpresponse = bookController.deleteBook(ID);
        assertEquals(HttpStatus.NOT_FOUND, httpresponse.getStatusCode());
    }

}

I am new to this, would you be very kind, where is the error or what is the correct way?, I thought I could do the same as the empty method but I tried all the reserved words but it didn't work for me我是新手,请问错误在哪里或正确的方法是什么?,我以为我可以像空方法一样做,但我尝试了所有保留字,但它对我不起作用

Optional is a SDK class introduced with Java 8 and defines a fixed set of methods (cf. JavaDoc). Optional的是 SDK class 与 Java 8 一起引入并定义了一组固定的方法(参见 JavaDoc)。 You cannot "invent" your own methods on it and expect them to magically work.您不能在其上“发明”自己的方法并期望它们神奇地起作用。 java.util.Optional is in no way dependent on your services. java.util.Optional绝不依赖于您的服务。

If you have an optional without value, that's Optional.empty() .如果你有一个没有价值的可选,那就是Optional.empty() If you have an optional with a value, that's Optional.of(…) .如果你有一个带有值的可选,那就是Optional.of(…) So deleting a book would still use Optional.empty() .所以删除一本书仍然会使用Optional.empty() Same as your bookNotFound test uses Optional.empty() and not Optional.notFound() .与您的bookNotFound测试使用Optional.empty()而不是Optional.notFound()相同。

(Answer too long for a comment, but I'd rather have this question closed as "typo".) (回答太长无法发表评论,但我宁愿将此问题作为“打字错误”关闭。)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM