mocking - How to mock local variables in java? -
this question has answer here:
in situation?
class {   public void f() {     b b = new b();     c c = new c();     // use b , c, , how modify behaviour?   } }   how can fullfill idea powermock , easymock?
i don't want change compact code test reasons.
you can this, see answer matt lachman. approach isn't recommended however. it's bit hacky.
the best approach delegate creation of dependant objects factory pattern , inject factories a class:
class bfactory {      public b newinstance() {         return new b();     } }  class cfactory {      public c newinstance() {         return new c();     } }  class {      private final bfactory bfactory;     private final cfactory cfactory;      public a(final bfactory bfactory, final cfactory cfactory) {         this.bfactory = bfactory;         this.cfactory = cfactory;     }      public void f() {         b b = bfactory.newinstance();         c c = cfactory.newinstance();     } }   you mock factories return mock instances of dependent classes.
if reason not viable can create factory methods in a class
class {      public void f() {         b b = newb();         c c = newc();     }      protected b newb() {         return new b();     }      protected c newc() {         return newc();     } }   then can use spy mocks factory methods.
Comments
Post a Comment