Как написать junit и mockito для приведенного ниже кода, можно ли издеваться над классом C? - PullRequest
0 голосов
/ 25 мая 2019

Может кто-нибудь помочь мне написать mockito для кода ниже.

public class B extends A()
{
public void dial()
{
C c =new C();
c.command();
}
}

1 Ответ

0 голосов
/ 25 мая 2019

Вы не можете сделать это так, потому что вы тесно связаны с использованием «настоящего» класса C.

Вместо этого укажите Supplier<C> (или, в более общем случае, Supplier<? extends C>) дляКонструктор B:

public class B extends A
{
  private final Supplier<? extends C> cSupplier;

  public B(Supplier<? extends C> cSupplier) {
    this.cSupplier = cSupplier;
  }

  public void dial()
  {
    C c = cSupplier.get();
    c.command();
  }
}

Теперь вы можете передать экземпляр поставщика:

// In production code:
B b = new B(C::new);

// In test code:
B b = new B(() -> mock(C.class));
...