Ho una classe Foo
che crea istanze di altre classi A
, B
e C
nel suo costruttore. A
, B
e C
condividono lo stesso parametro del costruttore e sono utilizzati in altre parti del codebase, non solo in Foo
. A
, B
e C
accedono a una risorsa esterna configurata dal parametro passato. Nei test unitari, A
, B
e C
sono presi in giro con unittest.mock.patch
.
class Foo(object):
def __init__(self, param):
self.a = A(param)
self.b = B(param)
self.c = C(param)
foo = Foo('param')
Il seguente sarebbe un miglioramento o solo un codice non necessario? Passare in unittest.mock.Mock
oggetti nei test preferiti rispetto a unittest.mock.patch
? In pratica, A
, B
e C
dovrebbero sempre condividere lo stesso parametro.
class Foo(object):
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
@classmethod
def from_param(cls, param):
return cls(A(param), B(param), C(param))
foo = Foo.from_param('param')