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