Как издеваться над конструктором с помощью Mockito - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть вопрос, касающийся одной из особенностей мокито. В нескольких блогах я читал, что с помощью mockito конструктор-насмешка невозможен.

Для одного из моих тестовых случаев в настоящее время это делается с помощью powermockito, но я хочу удалить его из-за некоторых проблем с производительностью.

В настоящее время код выглядит примерно так:

Фактический класс:

public class TestClass {
    private ClassB classB;

    public TestClass(ClassB classB) {
       this.classB = classB;
    }
}

В моем тестовом классе у меня есть такой код:

TestClass testClass = Mockito.mock(TestClass.class);
PowerMockito.whenNew(TestClass.class).withArguments(this.classB)
    .thenReturn(testClass);

Так может ли кто-нибудь подсказать мне, есть ли другой способ, с помощью которого я могу достичь того же с помощью mockito? Также в некоторых блогах я обнаружил, что внедрение публичного метода с конструктором класса внутри, а затем насмешка над этим методом может помочь. Но хотел узнать все остальные варианты для анализа.

Спасибо

-Sam

1 Ответ

0 голосов
/ 07 сентября 2018

Я не уверен, может ли это помочь вам.

class MyClass {

            private final MySecondClass clazz;

            MyClass(MySecondClass clazz) {
                this.clazz = clazz;
            }

            public boolean executeDoSomething() {
                return clazz.doSomething();
            }
        }

И в тесте вы можете высмеять внутренний класс:

@RunWith(MockitoJUnitRunner.class)
        public class MyClassTest {
            @Test
            public void MyClassTest() {
                MySecondClass mockedPerformer = Mockito.mock(MySecondClass.class);
                MyClass clazz = new MyClass(mockedPerformer);
                clazz.executeDoSomething();
            }
        }

Надеюсь, это вам поможет.

...