如何从模拟对象中获取原始类名?

时间:2017-09-13 07:20:09

标签: java mockito

Book aBook = mock(Book.class);

当我写执行

aBook.getClass()它给出了

classcom.tw.model.Book$$EnhancerByMockitoWithCGLIB$$feb29207

但我想:classcom.tw.model.Book

2 个答案:

答案 0 :(得分:1)

使用instanceof代替getClass()

void methodUnderTest(Object object) {
    if (object instanceof Book) {
        Book book = (Book) object;
        // read the book
    }
}

现在可以通过模拟轻松测试:

@Test
public void bookTest() {
    methodUnderTest(mock(Book.class));
}

答案 1 :(得分:0)

自Mockito 2.1.0起,您可以使用getMockCreationSettings()获取有关 被模拟的详细信息。来自docs

  

添加了通过

访问模拟创建设置的可能性      

Mockito.mockingDetails(mock).getMockCreationSettings()

以下是一个例子:

@Test
public void aTest() {
    Foo mock = Mockito.mock(Foo.class);

    MockCreationSettings<?> mockCreationSettings = Mockito.mockingDetails(mock).getMockCreationSettings();

    Assert.assertEquals(Foo.class, mockCreationSettings.getTypeToMock());
}