java - 使用 Mockito 测试返回对象的方法

标签 java unit-testing mockito

我想测试使用 Mockito 返回书籍对象的 makeBooks() 方法。 因此测试将检查它是否返回一个 book 对象。我该怎么做?

下面是我生产书籍的工厂。该类下面是我的 Mockito 测试类。 我收到错误代码“我误用了 Mockito”

顺便我正在学习 Mockito。这既不是家庭作业,也不是作业。

public class ItemFactory {
    public Items getItems(String itemType)
    {      
        public static Books makeBooks(String bookName,String authorName, int ISBN, int id)
        {
            Books book = new Books(bookName, authorName, ISBN, id);
            return book;
        }
    }
}

public class TestItemFactory {
    private static final Books books = null;
    private static ItemFactory mockItemFactory;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        mockItemFactory = Mockito.mock(ItemFactory.class);
    }

    @Test
    public void testShouldReturnObjectBooks(){
        //ItemFactory methodMakeBooks = Mockito.mock(ItemFactory.class) ;
        //Books book = null;// = ItemFactory.makeBooks("Hamlet", "ShakeSpear", 123456, 9);
        //final Class<?> bookClass = Books.class;
        //Mockito.when(methodMakeBooks.makeBooks(null, null, 0, 0)).thenReturn(book);
        Books book = null;

        mockItemFactory = Mockito.spy(new ItemFactory());
        Books mockBook = Mockito.mock(Books.class);
        Mockito.when(mockItemFactory.makeBooks(null, null, 0, 0)).thenReturn(book);
        //Mockito.doReturn(mockBook).when(mockItemFactory).makeBooks(null, null, 0, 0);
    }
}

最佳答案

您不应该 mock 正在测试的类。您必须模拟正在测试的类/方法正在使用的类。模拟 Itemsfactory.makeBooks() 没有意义

如果有一个 Bookfactory,ItemsFactory 正在使用它来制作书籍,那么您可以模拟 BookFactory 以返回您期望的特定书籍/书籍集。然后你就可以断言

关于java - 使用 Mockito 测试返回对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19748439/

相关文章:

java - 单元测试覆盖调用 super() 的方法

unit-testing - 当测试在另一个包中时获取覆盖率统计信息

javascript - 如何用 sinon 模拟 AWS S3 getObject

java - 使用 HandlerInterceptor 或 AbstractAuthenticationProcessingFilter 进行 Spring 身份验证

java - 将类型为 class 的变量分配给扩展声明的变量类型的不同类

java - 使用Struts 2上传图像

java - 如何使用Mockito验证一个方法在另一个方法中被调用?

java - 从 java 到 scala 集合的隐式转换成本

java - 为什么 Mockito @Mock 创建一个非模拟实例?

java - 有没有办法验证 Spring Controller 上的方法是使用 Mockito 调用的