Chris@0
|
1 <?php
|
Chris@0
|
2 /*
|
Chris@0
|
3 * This file is part of the PHPUnit_MockObject package.
|
Chris@0
|
4 *
|
Chris@0
|
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
|
Chris@0
|
6 *
|
Chris@0
|
7 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
8 * file that was distributed with this source code.
|
Chris@0
|
9 */
|
Chris@0
|
10
|
Chris@0
|
11 /**
|
Chris@0
|
12 * Implementation of the Builder pattern for Mock objects.
|
Chris@0
|
13 *
|
Chris@0
|
14 * @since File available since Release 1.0.0
|
Chris@0
|
15 */
|
Chris@0
|
16 class PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
17 {
|
Chris@0
|
18 /**
|
Chris@0
|
19 * @var PHPUnit_Framework_TestCase
|
Chris@0
|
20 */
|
Chris@0
|
21 private $testCase;
|
Chris@0
|
22
|
Chris@0
|
23 /**
|
Chris@0
|
24 * @var string
|
Chris@0
|
25 */
|
Chris@0
|
26 private $type;
|
Chris@0
|
27
|
Chris@0
|
28 /**
|
Chris@0
|
29 * @var array
|
Chris@0
|
30 */
|
Chris@0
|
31 private $methods = array();
|
Chris@0
|
32
|
Chris@0
|
33 /**
|
Chris@0
|
34 * @var string
|
Chris@0
|
35 */
|
Chris@0
|
36 private $mockClassName = '';
|
Chris@0
|
37
|
Chris@0
|
38 /**
|
Chris@0
|
39 * @var array
|
Chris@0
|
40 */
|
Chris@0
|
41 private $constructorArgs = array();
|
Chris@0
|
42
|
Chris@0
|
43 /**
|
Chris@0
|
44 * @var bool
|
Chris@0
|
45 */
|
Chris@0
|
46 private $originalConstructor = true;
|
Chris@0
|
47
|
Chris@0
|
48 /**
|
Chris@0
|
49 * @var bool
|
Chris@0
|
50 */
|
Chris@0
|
51 private $originalClone = true;
|
Chris@0
|
52
|
Chris@0
|
53 /**
|
Chris@0
|
54 * @var bool
|
Chris@0
|
55 */
|
Chris@0
|
56 private $autoload = true;
|
Chris@0
|
57
|
Chris@0
|
58 /**
|
Chris@0
|
59 * @var bool
|
Chris@0
|
60 */
|
Chris@0
|
61 private $cloneArguments = false;
|
Chris@0
|
62
|
Chris@0
|
63 /**
|
Chris@0
|
64 * @var bool
|
Chris@0
|
65 */
|
Chris@0
|
66 private $callOriginalMethods = false;
|
Chris@0
|
67
|
Chris@0
|
68 /**
|
Chris@0
|
69 * @var object
|
Chris@0
|
70 */
|
Chris@0
|
71 private $proxyTarget = null;
|
Chris@0
|
72
|
Chris@0
|
73 /**
|
Chris@0
|
74 * @param PHPUnit_Framework_TestCase $testCase
|
Chris@0
|
75 * @param array|string $type
|
Chris@0
|
76 */
|
Chris@0
|
77 public function __construct(PHPUnit_Framework_TestCase $testCase, $type)
|
Chris@0
|
78 {
|
Chris@0
|
79 $this->testCase = $testCase;
|
Chris@0
|
80 $this->type = $type;
|
Chris@0
|
81 }
|
Chris@0
|
82
|
Chris@0
|
83 /**
|
Chris@0
|
84 * Creates a mock object using a fluent interface.
|
Chris@0
|
85 *
|
Chris@0
|
86 * @return PHPUnit_Framework_MockObject_MockObject
|
Chris@0
|
87 */
|
Chris@0
|
88 public function getMock()
|
Chris@0
|
89 {
|
Chris@0
|
90 return $this->testCase->getMock(
|
Chris@0
|
91 $this->type,
|
Chris@0
|
92 $this->methods,
|
Chris@0
|
93 $this->constructorArgs,
|
Chris@0
|
94 $this->mockClassName,
|
Chris@0
|
95 $this->originalConstructor,
|
Chris@0
|
96 $this->originalClone,
|
Chris@0
|
97 $this->autoload,
|
Chris@0
|
98 $this->cloneArguments,
|
Chris@0
|
99 $this->callOriginalMethods,
|
Chris@0
|
100 $this->proxyTarget
|
Chris@0
|
101 );
|
Chris@0
|
102 }
|
Chris@0
|
103
|
Chris@0
|
104 /**
|
Chris@0
|
105 * Creates a mock object for an abstract class using a fluent interface.
|
Chris@0
|
106 *
|
Chris@0
|
107 * @return PHPUnit_Framework_MockObject_MockObject
|
Chris@0
|
108 */
|
Chris@0
|
109 public function getMockForAbstractClass()
|
Chris@0
|
110 {
|
Chris@0
|
111 return $this->testCase->getMockForAbstractClass(
|
Chris@0
|
112 $this->type,
|
Chris@0
|
113 $this->constructorArgs,
|
Chris@0
|
114 $this->mockClassName,
|
Chris@0
|
115 $this->originalConstructor,
|
Chris@0
|
116 $this->originalClone,
|
Chris@0
|
117 $this->autoload,
|
Chris@0
|
118 $this->methods,
|
Chris@0
|
119 $this->cloneArguments
|
Chris@0
|
120 );
|
Chris@0
|
121 }
|
Chris@0
|
122
|
Chris@0
|
123 /**
|
Chris@0
|
124 * Creates a mock object for a trait using a fluent interface.
|
Chris@0
|
125 *
|
Chris@0
|
126 * @return PHPUnit_Framework_MockObject_MockObject
|
Chris@0
|
127 */
|
Chris@0
|
128 public function getMockForTrait()
|
Chris@0
|
129 {
|
Chris@0
|
130 return $this->testCase->getMockForTrait(
|
Chris@0
|
131 $this->type,
|
Chris@0
|
132 $this->constructorArgs,
|
Chris@0
|
133 $this->mockClassName,
|
Chris@0
|
134 $this->originalConstructor,
|
Chris@0
|
135 $this->originalClone,
|
Chris@0
|
136 $this->autoload,
|
Chris@0
|
137 $this->methods,
|
Chris@0
|
138 $this->cloneArguments
|
Chris@0
|
139 );
|
Chris@0
|
140 }
|
Chris@0
|
141
|
Chris@0
|
142 /**
|
Chris@0
|
143 * Specifies the subset of methods to mock. Default is to mock all of them.
|
Chris@0
|
144 *
|
Chris@0
|
145 * @param array|null $methods
|
Chris@0
|
146 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
147 */
|
Chris@0
|
148 public function setMethods($methods)
|
Chris@0
|
149 {
|
Chris@0
|
150 $this->methods = $methods;
|
Chris@0
|
151
|
Chris@0
|
152 return $this;
|
Chris@0
|
153 }
|
Chris@0
|
154
|
Chris@0
|
155 /**
|
Chris@0
|
156 * Specifies the arguments for the constructor.
|
Chris@0
|
157 *
|
Chris@0
|
158 * @param array $args
|
Chris@0
|
159 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
160 */
|
Chris@0
|
161 public function setConstructorArgs(array $args)
|
Chris@0
|
162 {
|
Chris@0
|
163 $this->constructorArgs = $args;
|
Chris@0
|
164
|
Chris@0
|
165 return $this;
|
Chris@0
|
166 }
|
Chris@0
|
167
|
Chris@0
|
168 /**
|
Chris@0
|
169 * Specifies the name for the mock class.
|
Chris@0
|
170 *
|
Chris@0
|
171 * @param string $name
|
Chris@0
|
172 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
173 */
|
Chris@0
|
174 public function setMockClassName($name)
|
Chris@0
|
175 {
|
Chris@0
|
176 $this->mockClassName = $name;
|
Chris@0
|
177
|
Chris@0
|
178 return $this;
|
Chris@0
|
179 }
|
Chris@0
|
180
|
Chris@0
|
181 /**
|
Chris@0
|
182 * Disables the invocation of the original constructor.
|
Chris@0
|
183 *
|
Chris@0
|
184 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
185 */
|
Chris@0
|
186 public function disableOriginalConstructor()
|
Chris@0
|
187 {
|
Chris@0
|
188 $this->originalConstructor = false;
|
Chris@0
|
189
|
Chris@0
|
190 return $this;
|
Chris@0
|
191 }
|
Chris@0
|
192
|
Chris@0
|
193 /**
|
Chris@0
|
194 * Enables the invocation of the original constructor.
|
Chris@0
|
195 *
|
Chris@0
|
196 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
197 * @since Method available since Release 1.2.0
|
Chris@0
|
198 */
|
Chris@0
|
199 public function enableOriginalConstructor()
|
Chris@0
|
200 {
|
Chris@0
|
201 $this->originalConstructor = true;
|
Chris@0
|
202
|
Chris@0
|
203 return $this;
|
Chris@0
|
204 }
|
Chris@0
|
205
|
Chris@0
|
206 /**
|
Chris@0
|
207 * Disables the invocation of the original clone constructor.
|
Chris@0
|
208 *
|
Chris@0
|
209 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
210 */
|
Chris@0
|
211 public function disableOriginalClone()
|
Chris@0
|
212 {
|
Chris@0
|
213 $this->originalClone = false;
|
Chris@0
|
214
|
Chris@0
|
215 return $this;
|
Chris@0
|
216 }
|
Chris@0
|
217
|
Chris@0
|
218 /**
|
Chris@0
|
219 * Enables the invocation of the original clone constructor.
|
Chris@0
|
220 *
|
Chris@0
|
221 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
222 * @since Method available since Release 1.2.0
|
Chris@0
|
223 */
|
Chris@0
|
224 public function enableOriginalClone()
|
Chris@0
|
225 {
|
Chris@0
|
226 $this->originalClone = true;
|
Chris@0
|
227
|
Chris@0
|
228 return $this;
|
Chris@0
|
229 }
|
Chris@0
|
230
|
Chris@0
|
231 /**
|
Chris@0
|
232 * Disables the use of class autoloading while creating the mock object.
|
Chris@0
|
233 *
|
Chris@0
|
234 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
235 */
|
Chris@0
|
236 public function disableAutoload()
|
Chris@0
|
237 {
|
Chris@0
|
238 $this->autoload = false;
|
Chris@0
|
239
|
Chris@0
|
240 return $this;
|
Chris@0
|
241 }
|
Chris@0
|
242
|
Chris@0
|
243 /**
|
Chris@0
|
244 * Enables the use of class autoloading while creating the mock object.
|
Chris@0
|
245 *
|
Chris@0
|
246 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
247 * @since Method available since Release 1.2.0
|
Chris@0
|
248 */
|
Chris@0
|
249 public function enableAutoload()
|
Chris@0
|
250 {
|
Chris@0
|
251 $this->autoload = true;
|
Chris@0
|
252
|
Chris@0
|
253 return $this;
|
Chris@0
|
254 }
|
Chris@0
|
255
|
Chris@0
|
256 /**
|
Chris@0
|
257 * Disables the cloning of arguments passed to mocked methods.
|
Chris@0
|
258 *
|
Chris@0
|
259 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
260 * @since Method available since Release 1.2.0
|
Chris@0
|
261 */
|
Chris@0
|
262 public function disableArgumentCloning()
|
Chris@0
|
263 {
|
Chris@0
|
264 $this->cloneArguments = false;
|
Chris@0
|
265
|
Chris@0
|
266 return $this;
|
Chris@0
|
267 }
|
Chris@0
|
268
|
Chris@0
|
269 /**
|
Chris@0
|
270 * Enables the cloning of arguments passed to mocked methods.
|
Chris@0
|
271 *
|
Chris@0
|
272 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
273 * @since Method available since Release 1.2.0
|
Chris@0
|
274 */
|
Chris@0
|
275 public function enableArgumentCloning()
|
Chris@0
|
276 {
|
Chris@0
|
277 $this->cloneArguments = true;
|
Chris@0
|
278
|
Chris@0
|
279 return $this;
|
Chris@0
|
280 }
|
Chris@0
|
281
|
Chris@0
|
282 /**
|
Chris@0
|
283 * Enables the invocation of the original methods.
|
Chris@0
|
284 *
|
Chris@0
|
285 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
286 * @since Method available since Release 2.0.0
|
Chris@0
|
287 */
|
Chris@0
|
288 public function enableProxyingToOriginalMethods()
|
Chris@0
|
289 {
|
Chris@0
|
290 $this->callOriginalMethods = true;
|
Chris@0
|
291
|
Chris@0
|
292 return $this;
|
Chris@0
|
293 }
|
Chris@0
|
294
|
Chris@0
|
295 /**
|
Chris@0
|
296 * Disables the invocation of the original methods.
|
Chris@0
|
297 *
|
Chris@0
|
298 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
299 * @since Method available since Release 2.0.0
|
Chris@0
|
300 */
|
Chris@0
|
301 public function disableProxyingToOriginalMethods()
|
Chris@0
|
302 {
|
Chris@0
|
303 $this->callOriginalMethods = false;
|
Chris@0
|
304 $this->proxyTarget = null;
|
Chris@0
|
305
|
Chris@0
|
306 return $this;
|
Chris@0
|
307 }
|
Chris@0
|
308
|
Chris@0
|
309 /**
|
Chris@0
|
310 * Sets the proxy target.
|
Chris@0
|
311 *
|
Chris@0
|
312 * @param object $object
|
Chris@0
|
313 * @return PHPUnit_Framework_MockObject_MockBuilder
|
Chris@0
|
314 * @since Method available since Release 2.0.0
|
Chris@0
|
315 */
|
Chris@0
|
316 public function setProxyTarget($object)
|
Chris@0
|
317 {
|
Chris@0
|
318 $this->proxyTarget = $object;
|
Chris@0
|
319
|
Chris@0
|
320 return $this;
|
Chris@0
|
321 }
|
Chris@0
|
322 }
|