Создание объектов насмешливый мокито - PullRequest
0 голосов
/ 03 мая 2018

у меня есть класс сверху и снизу. я хочу провести модульный тест класса атома, который создает объект дна.

public class top {

  publiv top() {
     bottom b = new bottom("value");
  }
}

Класс юнит-теста:

public class topTest {
   @Test
   public void test(){ 
     top a = new top();
   }
}

при создании объекта для высшего класса в тесте он создаст объект для нижнего класса.

Здесь я хочу высмеивать создание объекта нижнего класса. Может ли кто-нибудь помочь мне в этом.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Вам нужно будет куда-то переместить логику, создающую экземпляр bottom. Либо в переопределяемом методе, таком как:

public class top {

  public top() {
     bottom b = new bottom("value");
  }

  protected bottom createBottom() {
     return new bottom("value");
  }
}

И тогда вы можете переопределить его в тесте:

public class topTest {
   @Test
   public void test(){ 
     top a = new top() {
            protected bottom createBottom() {
               return Mockito.mock(bottom.class);
             }   
             };
   }
}

Или вы создаете класс BottomCreator, передаете его Top во время создания и используете поддельную / поддельную версию при тестировании.

public class top {

      private final BottomCreator bottomCreator;

      public top(BottomCreator creator) {
           this.bottomCreator = creator;
      }

      public top() {
         bottom b = bottomCreator.newBottom();
      }

    }
0 голосов
/ 03 мая 2018

Для этого вы должны передать нижний объект в качестве параметра. Всегда полезно передавать объекты в качестве параметров, когда объекты зависят от этого объекта.

public class Top {
   private Bottom bottom;

   public Top(Bottom bottom) {
      this.bottom = bottom
   }
}

public class TopTest {
   @Test
   public void test(){ 
      Bottom bottom = mock(Bottom.class);
      Top top = new Top(bottom);
   }
}
...