Как издеваться над этими типами запросов? - PullRequest
0 голосов
/ 12 апреля 2020

Я новичок в модульном тестировании. Я должен протестировать метод publi c, который использует следующий закрытый метод.

     public void f1({some parameters}){
             List<Vertex> rVertex = fn(vertexId, graphTraversalSource,2);
            for (Vertex vertex : resultVertex) {
                if (checkingForAProperty(vertex.id().toString())) {
                     // some operations
                }
            }
         }


    private List<Vertex> fn(String v, GraphTraversalSource g, int i) {
        return g.V(v).repeat(in().dedup().simplePath()).until(loops().is(i)).toList();
      }

Я подумал о следующем (ужасном) подходе (предположим, что g здесь осмеян):

when (g.V(v)).then(X);
when (X.repeat(any)).then(Y);
when (Y.until(any)).then(Z);

Но я не мог решить, как это сделать. Любые предложения сделать это будут действительно полезны.

1 Ответ

0 голосов
/ 12 апреля 2020

Вы можете сделать это, используя глубокие заглушки :

GraphTraversalSource g = mock(GraphTraversalSource.class, RETURNS_DEEP_STUBS);
when(g.V(any()).repeat(any()).until(any()).thenReturn(z);

Однако имейте в виду, что глубокую заглушку следует использовать редко (см. wiki ):

Этот вид заглушки, например, макет для возврата макета, для возврата макета и т. Д. c. следует использовать очень редко, в идеале никогда . Это ясно указывает на нарушение Закона Деметры . Ты не хочешь связываться с Деметрой. Так как вы были предупреждены, проверьте Mockito глубокие заглушки .

...