@@ -10,12 +10,20 @@ def __init__(self, value):
10
10
self .value = value
11
11
self .values = [self .value ]
12
12
13
- def get_value (self ):
13
+ def __call__ (self ):
14
14
return self .value
15
15
16
16
def __getitem__ (self , item ):
17
17
return self .values [item ]
18
18
19
+ def get_value (self ):
20
+ return self .value
21
+
22
+ def get_closure (self ):
23
+ def closure ():
24
+ return self .value
25
+ return closure
26
+
19
27
20
28
class Client :
21
29
def __init__ (self , value ):
@@ -45,6 +53,15 @@ class Container(containers.DeclarativeContainer):
45
53
Client ,
46
54
value = service .provided .get_value .call (),
47
55
)
56
+ client_met
8000
hod_closure_call = providers .Factory (
57
+ Client ,
58
+ value = service .provided .get_closure .call ().call (),
59
+ )
60
+
61
+ client_provided_call = providers .Factory (
62
+ Client ,
63
+ value = service .provided .call (),
64
+ )
48
65
49
66
50
67
class ProvidedInstanceTests (unittest .TestCase ):
@@ -71,6 +88,14 @@ def test_method_call(self):
71
88
client = self .container .client_method_call ()
72
89
self .assertEqual (client .value , 'foo' )
73
90
91
+ def test_method_closure_call (self ):
92
+ client = self .container .client_method_closure_call ()
93
+ self .assertEqual (client .value , 'foo' )
94
+
95
+ def test_provided_call (self ):
96
+ client = self .container .client_provided_call ()
97
+ self .assertEqual (client .value , 'foo' )
98
+
74
99
def test_call_overridden (self ):
75
100
value = 'bar'
76
101
with self .container .service .override (Service (value )):
0 commit comments