проверьте, что метод возвращает экземпляр соответствующего класса - PullRequest
0 голосов
/ 24 октября 2018

У меня есть простой метод, который создает новый объект (на самом деле он создает довольно сложный объект)

class MyClass {
    public MyObject create() { return new MyObject(); }
}

Я хочу проверить, что при вызове create он возвращает isntance MyObject.Как это сделать, используя mockito?

public MyClassTest {
    @Mock
    private MyClass myClassMock;

    @Test
    public void testCreate() {
        ???
    }

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Попробуйте это:

if (create() instanceof MyObject ) {
   // ...
}
0 голосов
/ 24 октября 2018

Хотя нет реальной необходимости проверять такое поведение, вы могли бы сделать что-то вроде этого:

import org.junit.Test;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertThat;

public MyClassTest {

    @Test
    public void testCreate() {
        MyClass myClass = new MyClass();
        assertThat(myClass.create(), instanceOf(MyObject.class));
    }
}

Больше информации об используемом Matcher: http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/CoreMatchers.html#instanceOf(java.lang.Class)

0 голосов
/ 24 октября 2018

Нет необходимости проверять это на статически типизированном языке, таком как Java.Если он компилируется, он будет всегда создавать экземпляр MyObject, потому что это то, что декларирует возвращаемый тип.

Если по какой-либо причине вы хотите проверять типы во время выполнения (возможно, потому чтоВы хотите проверить более строгие критерии, чем те, что дает система типов на данный момент), есть ключевое слово instanceof или Class::isInstance()

...