‪TYPO3CMS  11.5
ContainerTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use Psr\Container\ContainerInterface;
21 use Psr\Container\NotFoundExceptionInterface;
22 use Psr\Log\LoggerInterface;
23 use Psr\Log\LoggerTrait;
39 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
40 
44 class ‪ContainerTest extends UnitTestCase
45 {
49  protected ‪$resetSingletonInstances = true;
50 
54  protected ‪Container ‪$subject;
55 
56  protected LoggerInterface ‪$logger;
57 
58  protected function ‪setUp(): void
59  {
60  parent::setUp();
61  $this->logger = new class () implements LoggerInterface {
62  use LoggerTrait;
63  public array $records = [];
64  public function log($level, $message, array $context = []): void
65  {
66  $this->records[] = [
67  'level' => $level,
68  'message' => $message,
69  'context' => $context,
70  ];
71  }
72  };
73 
74  $reflectionService = new ‪ReflectionService(new ‪NullFrontend('extbase'), 'ClassSchemata');
75 
76  $notFoundException = new class () extends \‪Exception implements NotFoundExceptionInterface {};
77 
78  $psrContainer = $this->getMockBuilder(ContainerInterface::class)
79  ->onlyMethods(['has', 'get'])
80  ->getMock();
81  $psrContainer->method('has')->willReturn(false);
82  $psrContainer->method('get')->will(self::throwException($notFoundException));
83 
84  $this->subject = $this->getMockBuilder(Container::class)
85  ->setConstructorArgs([$psrContainer])
86  ->onlyMethods(['getReflectionService'])
87  ->addMethods(['getLogger'])
88  ->getMock();
89  $this->subject->setLogger($this->logger);
90  $this->subject->method('getReflectionService')->willReturn($reflectionService);
91  }
92 
96  public function ‪getInstanceReturnsInstanceOfSimpleClass(): void
97  {
98  $object = $this->subject->getInstance('t3lib_object_tests_c');
99  self::assertInstanceOf('t3lib_object_tests_c', $object);
100  }
101 
106  {
107  $object = $this->subject->getInstance(NamespacedClass::class);
108  self::assertInstanceOf(NamespacedClass::class, $object);
109  }
110 
115  {
116  $object = $this->subject->getInstance('t3lib_object_tests_b');
117  self::assertInstanceOf('t3lib_object_tests_b', $object);
118  self::assertInstanceOf('t3lib_object_tests_c', $object->c);
119  }
120 
125  {
126  $object = $this->subject->getInstance('t3lib_object_tests_a');
127  self::assertInstanceOf('t3lib_object_tests_a', $object);
128  self::assertInstanceOf('t3lib_object_tests_c', $object->b->c);
129  }
130 
135  {
136  $object = $this->subject->getInstance('t3lib_object_tests_amixed_array');
137  self::assertInstanceOf('t3lib_object_tests_amixed_array', $object);
138  self::assertEquals(['some' => 'default'], $object->myvalue);
139  }
140 
145  {
146  $object = $this->subject->getInstance('t3lib_object_tests_amixed_null');
147  self::assertInstanceOf('t3lib_object_tests_amixed_null', $object);
148  self::assertNull($object->myvalue);
149  }
150 
155  {
156  $this->expectException(Exception::class);
157  $this->expectExceptionCode(1292858051);
158  $this->subject->getInstance('t3lib_object_tests_amixed_array_singleton', ['somevalue']);
159  }
160 
165  {
166  $object = $this->subject->getInstance('t3lib_object_tests_amixed_array');
167  self::assertInstanceOf('t3lib_object_tests_b', $object->b);
168  self::assertInstanceOf('t3lib_object_tests_c', $object->c);
169  self::assertEquals(['some' => 'default'], $object->myvalue);
170  }
171 
176  {
177  $mockObject = $this->createMock('t3lib_object_tests_c');
178  $object = $this->subject->getInstance('t3lib_object_tests_a', [$mockObject]);
179  self::assertInstanceOf('t3lib_object_tests_a', $object);
180  self::assertSame($mockObject, $object->c);
181  }
182 
187  {
188  $object1 = $this->subject->getInstance('t3lib_object_tests_a');
189  $object2 = $this->subject->getInstance('t3lib_object_tests_a');
190  self::assertNotSame($object1, $object2);
191  }
192 
197  {
198  $object1 = $this->subject->getInstance('t3lib_object_tests_singleton');
199  $object2 = $this->subject->getInstance('t3lib_object_tests_singleton');
200  self::assertSame($object1, $object2);
201  }
202 
207  {
208  $this->expectException(CannotBuildObjectException::class);
209  $this->expectExceptionCode(1295611406);
210  $this->subject->getInstance('t3lib_object_tests_cyclic1WithSetterDependency');
211  }
212 
217  {
218  $this->expectException(CannotBuildObjectException::class);
219  $this->expectExceptionCode(1295611406);
220  $this->subject->getInstance('t3lib_object_tests_cyclic1');
221  }
222 
227  {
228  $this->expectException(UnknownClassException::class);
229  $this->expectExceptionCode(1278450972);
230  $this->subject->getInstance('nonextistingclass_bla');
231  }
232 
236  public function ‪getInstanceInitializesObjects(): void
237  {
238  $instance = $this->subject->getInstance('t3lib_object_tests_initializable');
239  self::assertTrue($instance->isInitialized());
240  }
241 
245  public function ‪getEmptyObjectReturnsInstanceOfSimpleClass(): void
246  {
247  $object = $this->subject->getEmptyObject('t3lib_object_tests_c');
248  self::assertInstanceOf('t3lib_object_tests_c', $object);
249  }
250 
255  {
256  $object = $this->subject->getEmptyObject('t3lib_object_tests_serializable');
257  self::assertInstanceOf('t3lib_object_tests_serializable', $object);
258  }
259 
263  public function ‪getEmptyObjectInitializesObjects(): void
264  {
265  $object = $this->subject->getEmptyObject('t3lib_object_tests_initializable');
266  self::assertTrue($object->isInitialized());
267  }
268 
272  public function ‪canGetChildClass(): void
273  {
274  $object = $this->subject->getInstance('t3lib_object_tests_b_child');
275  self::assertInstanceOf('t3lib_object_tests_b_child', $object);
276  }
277 
281  public function ‪canInjectInterfaceInClass(): void
282  {
283  $this->subject->registerImplementation('t3lib_object_tests_someinterface', 't3lib_object_tests_someimplementation');
284  $object = $this->subject->getInstance('t3lib_object_tests_needsinterface');
285  self::assertInstanceOf('t3lib_object_tests_needsinterface', $object);
286  self::assertInstanceOf('t3lib_object_tests_someinterface', $object->dependency);
287  self::assertInstanceOf('t3lib_object_tests_someimplementation', $object->dependency);
288  }
289 
294  {
295  $object = $this->subject->getInstance('t3lib_object_tests_resolveablecyclic1');
296  self::assertInstanceOf('t3lib_object_tests_resolveablecyclic1', $object);
297  self::assertInstanceOf('t3lib_object_tests_resolveablecyclic1', $object->o2->o3->o1);
298  }
299 
304  {
305  $object = $this->subject->getInstance('t3lib_object_singletonNeedsPrototype');
306  self::assertInstanceOf('t3lib_object_prototype', $object->dependency);
307  self::assertEquals('notice', $this->logger->records[0]['level']);
308  self::assertEquals('t3lib_object_singletonNeedsPrototype', $this->logger->records[0]['context']['class']);
309  self::assertEquals('injectDependency', $this->logger->records[0]['context']['method']);
310  }
311 
316  {
317  $object = $this->subject->getInstance('t3lib_object_singletonNeedsSingleton');
318  self::assertInstanceOf('t3lib_object_singleton', $object->dependency);
319  self::assertEmpty($this->logger->records);
320  }
321 
326  {
327  $object = $this->subject->getInstance('t3lib_object_prototypeNeedsPrototype');
328  self::assertInstanceOf('t3lib_object_prototype', $object->dependency);
329  self::assertEmpty($this->logger->records);
330  }
331 
336  {
337  $object = $this->subject->getInstance('t3lib_object_prototypeNeedsSingleton');
338  self::assertInstanceOf('t3lib_object_singleton', $object->dependency);
339  self::assertEmpty($this->logger->records);
340  }
341 
346  {
347  $object = $this->subject->getInstance('t3lib_object_singletonNeedsPrototypeInConstructor');
348  self::assertInstanceOf('t3lib_object_prototype', $object->dependency);
349  self::assertEquals('notice', $this->logger->records[0]['level']);
350  self::assertEquals('t3lib_object_singletonNeedsPrototypeInConstructor', $this->logger->records[0]['context']['class_name']);
351  }
352 
357  {
358  $object = $this->subject->getInstance('t3lib_object_singletonNeedsSingletonInConstructor');
359  self::assertInstanceOf('t3lib_object_singleton', $object->dependency);
360  self::assertEmpty($this->logger->records);
361  }
362 
367  {
368  $object = $this->subject->getInstance('t3lib_object_prototypeNeedsPrototypeInConstructor');
369  self::assertInstanceOf('t3lib_object_prototype', $object->dependency);
370  self::assertEmpty($this->logger->records);
371  }
372 
377  {
378  $object = $this->subject->getInstance('t3lib_object_prototypeNeedsSingletonInConstructor');
379  self::assertInstanceOf('t3lib_object_singleton', $object->dependency);
380  self::assertEmpty($this->logger->records);
381  }
382 
383  /************************************************
384  * Test regarding constructor argument injection
385  ************************************************/
386 
392  {
393  $object = $this->subject->getInstance(
394  SimpleTypeConstructorArgument::class,
395  [true]
396  );
397  self::assertTrue($object->foo);
398  }
399 
405  {
406  $object = $this->subject->getInstance(
407  SimpleTypeConstructorArgument::class
408  );
409  self::assertFalse($object->foo);
410  }
411 
417  {
418  $argumentTestClass = new ArgumentTestClass();
419  $object = $this->subject->getInstance(
420  MandatoryConstructorArgument::class,
421  [$argumentTestClass]
422  );
423  self::assertInstanceOf(
424  MandatoryConstructorArgument::class,
425  $object
426  );
427  self::assertSame($argumentTestClass, $object->argumentTestClass);
428  }
429 
435  {
436  $object = $this->subject->getInstance(
437  MandatoryConstructorArgument::class
438  );
439  self::assertInstanceOf(
440  MandatoryConstructorArgument::class,
441  $object
442  );
443  self::assertInstanceOf(
444  ArgumentTestClass::class,
445  $object->argumentTestClass
446  );
447  }
448 
454  {
455  $object = $this->subject->getInstance(
456  OptionalConstructorArgument::class
457  );
458  self::assertInstanceOf(
459  OptionalConstructorArgument::class,
460  $object
461  );
462  self::assertNull($object->argumentTestClass);
463  }
464 
470  {
471  $object = $this->subject->getInstance(
472  OptionalConstructorArgument::class,
473  [null]
474  );
475  self::assertInstanceOf(
476  OptionalConstructorArgument::class,
477  $object
478  );
479  self::assertNull($object->argumentTestClass);
480  }
481 
487  {
488  $argumentTestClass = new ArgumentTestClass();
489  $object = $this->subject->getInstance(
490  OptionalConstructorArgument::class,
491  [$argumentTestClass]
492  );
493  self::assertInstanceOf(
494  OptionalConstructorArgument::class,
495  $object
496  );
497  self::assertSame($argumentTestClass, $object->argumentTestClass);
498  }
499 
505  {
506  $firstArgument = new ArgumentTestClass();
507  $secondArgument = new ArgumentTestClass();
508  $object = $this->subject->getInstance(
509  MandatoryConstructorArgumentTwo::class,
510  [$firstArgument, $secondArgument]
511  );
512  self::assertInstanceOf(
513  MandatoryConstructorArgumentTwo::class,
514  $object
515  );
516  self::assertSame(
517  $firstArgument,
518  $object->argumentTestClass
519  );
520  self::assertSame(
521  $secondArgument,
522  $object->argumentTestClassTwo
523  );
524  }
525 
530  public function ‪getInstanceInjectsTwoMandatoryArguments(): void
531  {
532  $object = $this->subject->getInstance(
533  MandatoryConstructorArgumentTwo::class
534  );
535  self::assertInstanceOf(
536  MandatoryConstructorArgumentTwo::class,
537  $object
538  );
539  self::assertInstanceOf(
540  ArgumentTestClass::class,
541  $object->argumentTestClass
542  );
543  self::assertInstanceOf(
544  ArgumentTestClass::class,
545  $object->argumentTestClassTwo
546  );
547  self::assertNotSame(
548  $object->argumentTestClass,
549  $object->argumentTestClassTwo
550  );
551  }
552 
558  {
559  $firstArgument = new ArgumentTestClass();
560  $object = $this->subject->getInstance(
561  MandatoryConstructorArgumentTwo::class,
562  [$firstArgument]
563  );
564  self::assertInstanceOf(
565  MandatoryConstructorArgumentTwo::class,
566  $object
567  );
568  self::assertSame(
569  $firstArgument,
570  $object->argumentTestClass
571  );
572  self::assertInstanceOf(
573  ArgumentTestClass::class,
574  $object->argumentTestClassTwo
575  );
576  self::assertNotSame(
577  $object->argumentTestClass,
578  $object->argumentTestClassTwo
579  );
580  }
581 
587  {
588  $secondArgument = new ArgumentTestClass();
589  $object = $this->subject->getInstance(
590  MandatoryConstructorArgumentTwo::class,
591  [null, $secondArgument]
592  );
593  self::assertInstanceOf(
594  MandatoryConstructorArgumentTwo::class,
595  $object
596  );
597  self::assertInstanceOf(
598  ArgumentTestClass::class,
599  $object->argumentTestClass
600  );
601  self::assertInstanceOf(
602  ArgumentTestClass::class,
603  $object->argumentTestClassTwo
604  );
605  self::assertSame(
606  $secondArgument,
607  $object->argumentTestClassTwo
608  );
609  self::assertNotSame(
610  $object->argumentTestClass,
611  $object->argumentTestClassTwo
612  );
613  }
614 
620  {
621  $firstArgument = new ArgumentTestClass();
622  $secondArgument = new ArgumentTestClass();
623  $object = $this->subject->getInstance(
624  TwoConstructorArgumentsSecondOptional::class,
625  [$firstArgument, $secondArgument]
626  );
627  self::assertInstanceOf(
628  TwoConstructorArgumentsSecondOptional::class,
629  $object
630  );
631  self::assertSame(
632  $firstArgument,
633  $object->argumentTestClass
634  );
635  self::assertSame(
636  $secondArgument,
637  $object->argumentTestClassTwo
638  );
639  }
640 
646  {
647  $object = $this->subject->getInstance(
648  TwoConstructorArgumentsSecondOptional::class
649  );
650  self::assertInstanceOf(
651  TwoConstructorArgumentsSecondOptional::class,
652  $object
653  );
654  self::assertInstanceOf(
655  ArgumentTestClass::class,
656  $object->argumentTestClass
657  );
658  self::assertNull($object->argumentTestClassTwo);
659  }
660 
666  {
667  $object = $this->subject->getInstance(
668  TwoConstructorArgumentsSecondOptional::class,
669  [null, null]
670  );
671  self::assertInstanceOf(
672  TwoConstructorArgumentsSecondOptional::class,
673  $object
674  );
675  self::assertInstanceOf(
676  ArgumentTestClass::class,
677  $object->argumentTestClass
678  );
679  self::assertNull($object->argumentTestClassTwo);
680  }
681 
687  {
688  $firstArgument = new ArgumentTestClass();
689  $object = $this->subject->getInstance(
690  TwoConstructorArgumentsSecondOptional::class,
691  [$firstArgument]
692  );
693  self::assertInstanceOf(
694  TwoConstructorArgumentsSecondOptional::class,
695  $object
696  );
697  self::assertSame(
698  $firstArgument,
699  $object->argumentTestClass
700  );
701  self::assertNull($object->argumentTestClassTwo);
702  }
703 
709  {
710  $firstArgument = new ArgumentTestClass();
711  $object = $this->subject->getInstance(
712  TwoConstructorArgumentsSecondOptional::class,
713  [$firstArgument, null]
714  );
715  self::assertInstanceOf(
716  TwoConstructorArgumentsSecondOptional::class,
717  $object
718  );
719  self::assertSame(
720  $firstArgument,
721  $object->argumentTestClass
722  );
723  self::assertNull($object->argumentTestClassTwo);
724  }
725 
732  {
733  $object = $this->subject->getInstance(
734  TwoConstructorArgumentsFirstOptional::class,
735  [null]
736  );
737  self::assertInstanceOf(
738  TwoConstructorArgumentsFirstOptional::class,
739  $object
740  );
741  self::assertInstanceOf(
742  ArgumentTestClass::class,
743  $object->argumentTestClassTwo
744  );
745  }
746 
752  {
753  $first = new ArgumentTestClass();
754  $second = new ArgumentTestClass();
755  $object = $this->subject->getInstance(
756  TwoConstructorArgumentsFirstOptional::class,
757  [$first, $second]
758  );
759  self::assertInstanceOf(
760  TwoConstructorArgumentsFirstOptional::class,
761  $object
762  );
763  self::assertSame(
764  $first,
765  $object->argumentTestClass
766  );
767  self::assertSame(
768  $second,
769  $object->argumentTestClassTwo
770  );
771  }
772 
778  {
779  $first = new ArgumentTestClass();
780  $object = $this->subject->getInstance(
781  TwoConstructorArgumentsFirstOptional::class,
782  [$first]
783  );
784  self::assertInstanceOf(
785  TwoConstructorArgumentsFirstOptional::class,
786  $object
787  );
788  self::assertSame(
789  $first,
790  $object->argumentTestClass
791  );
792  self::assertInstanceOf(
793  ArgumentTestClass::class,
794  $object->argumentTestClassTwo
795  );
796  self::assertNotSame(
797  $object->argumentTestClass,
798  $object->argumentTestClassTwo
799  );
800  }
801 
808  {
809  $second = new ArgumentTestClass();
810  $object = $this->subject->getInstance(
811  TwoConstructorArgumentsFirstOptional::class,
812  [null, $second]
813  );
814  self::assertInstanceOf(
815  TwoConstructorArgumentsFirstOptional::class,
816  $object
817  );
818  self::assertSame(
819  $second,
820  $object->argumentTestClassTwo
821  );
822  }
823 
830  {
831  $object = $this->subject->getInstance(
832  TwoConstructorArgumentsFirstOptional::class,
833  [null, null]
834  );
835  self::assertInstanceOf(
836  TwoConstructorArgumentsFirstOptional::class,
837  $object
838  );
839  self::assertInstanceOf(
840  ArgumentTestClass::class,
841  $object->argumentTestClassTwo
842  );
843  }
844 
850  {
851  $first = new ArgumentTestClass();
852  $second = new ArgumentTestClass();
853  $object = $this->subject->getInstance(
854  TwoConstructorArgumentsBothOptional::class,
855  [$first, $second]
856  );
857  self::assertInstanceOf(
858  TwoConstructorArgumentsBothOptional::class,
859  $object
860  );
861  self::assertSame(
862  $first,
863  $object->argumentTestClass
864  );
865  self::assertSame(
866  $second,
867  $object->argumentTestClassTwo
868  );
869  }
870 
876  {
877  $object = $this->subject->getInstance(
878  TwoConstructorArgumentsBothOptional::class,
879  [null, null]
880  );
881  self::assertInstanceOf(
882  TwoConstructorArgumentsBothOptional::class,
883  $object
884  );
885  self::assertNull($object->argumentTestClass);
886  self::assertNull($object->argumentTestClassTwo);
887  }
888 
894  {
895  $object = $this->subject->getInstance(
896  TwoConstructorArgumentsBothOptional::class
897  );
898  self::assertInstanceOf(
899  TwoConstructorArgumentsBothOptional::class,
900  $object
901  );
902  self::assertNull($object->argumentTestClass);
903  self::assertNull($object->argumentTestClassTwo);
904  }
905 
911  {
912  $first = new ArgumentTestClass();
913  $object = $this->subject->getInstance(
914  TwoConstructorArgumentsBothOptional::class,
915  [$first]
916  );
917  self::assertInstanceOf(
918  TwoConstructorArgumentsBothOptional::class,
919  $object
920  );
921  self::assertSame(
922  $first,
923  $object->argumentTestClass
924  );
925  self::assertNull($object->argumentTestClassTwo);
926  }
927 
933  {
934  $first = new ArgumentTestClass();
935  $object = $this->subject->getInstance(
936  TwoConstructorArgumentsBothOptional::class,
937  [$first, null]
938  );
939  self::assertInstanceOf(
940  TwoConstructorArgumentsBothOptional::class,
941  $object
942  );
943  self::assertSame(
944  $first,
945  $object->argumentTestClass
946  );
947  self::assertNull($object->argumentTestClassTwo);
948  }
949 
955  {
956  $second = new ArgumentTestClass();
957  $object = $this->subject->getInstance(
958  TwoConstructorArgumentsBothOptional::class,
959  [null, $second]
960  );
961  self::assertInstanceOf(
962  TwoConstructorArgumentsBothOptional::class,
963  $object
964  );
965  self::assertNull($object->argumentTestClass);
966  self::assertSame(
967  $second,
968  $object->argumentTestClassTwo
969  );
970  }
971 }
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\canGetChildClass
‪canGetChildClass()
Definition: ContainerTest.php:271
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnTwoOptionalGivesNoArgumentsToConstructorIfArgumentsAreNull
‪getInstanceOnTwoOptionalGivesNoArgumentsToConstructorIfArgumentsAreNull()
Definition: ContainerTest.php:874
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\Fixtures\MandatoryConstructorArgument
Definition: ContainerConstructorInjectionTestFixtures.php:36
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\singletonWhichRequiresSingletonViaConstructorInjectionWorks
‪singletonWhichRequiresSingletonViaConstructorInjectionWorks()
Definition: ContainerTest.php:355
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnFirstOptionalAndSecondMandatoryInjectsSecondArgumentIfFirstIsGivenAsNull
‪getInstanceOnFirstOptionalAndSecondMandatoryInjectsSecondArgumentIfFirstIsGivenAsNull()
Definition: ContainerTest.php:730
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceGivesExistingConstructorArgumentToClassInstance
‪getInstanceGivesExistingConstructorArgumentToClassInstance()
Definition: ContainerTest.php:415
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\prototypeWhichRequiresPrototypeViaConstructorInjectionWorks
‪prototypeWhichRequiresPrototypeViaConstructorInjectionWorks()
Definition: ContainerTest.php:365
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceDoesNotInfluenceSimpleTypeConstructorArgumentIfNotGiven
‪getInstanceDoesNotInfluenceSimpleTypeConstructorArgumentIfNotGiven()
Definition: ContainerTest.php:403
‪TYPO3\CMS\Extbase\Object\Container\Container
Definition: Container.php:42
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceInjectsSecondMandatoryArgumentIfFirstIsGiven
‪getInstanceInjectsSecondMandatoryArgumentIfFirstIsGiven()
Definition: ContainerTest.php:556
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\$logger
‪LoggerInterface $logger
Definition: ContainerTest.php:55
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceThrowsExceptionWhenTryingToInstanciateASingletonWithConstructorParameters
‪getInstanceThrowsExceptionWhenTryingToInstanciateASingletonWithConstructorParameters()
Definition: ContainerTest.php:153
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnTwoOptionalGivesNoArgumentsToConstructorIfNoneAreGiven
‪getInstanceOnTwoOptionalGivesNoArgumentsToConstructorIfNoneAreGiven()
Definition: ContainerTest.php:892
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceReturnsAFreshInstanceIfObjectIsNoSingleton
‪getInstanceReturnsAFreshInstanceIfObjectIsNoSingleton()
Definition: ContainerTest.php:185
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container
Definition: ContainerTest.php:18
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceInjectsTwoMandatoryArguments
‪getInstanceInjectsTwoMandatoryArguments()
Definition: ContainerTest.php:529
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnTwoOptionalGivesOneArgumentToConstructorIfFirstIsNullAndSecondIsObject
‪getInstanceOnTwoOptionalGivesOneArgumentToConstructorIfFirstIsNullAndSecondIsObject()
Definition: ContainerTest.php:953
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnFirstOptionalAndSecondMandatoryGivesSecondArgumentAsIsIfFirstIsGivenAsNullAndSecondIsGiven
‪getInstanceOnFirstOptionalAndSecondMandatoryGivesSecondArgumentAsIsIfFirstIsGivenAsNullAndSecondIsGiven()
Definition: ContainerTest.php:806
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceThrowsExceptionIfClassWasNotFound
‪getInstanceThrowsExceptionIfClassWasNotFound()
Definition: ContainerTest.php:225
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\canBuildCyclicDependenciesOfSingletonsWithSetter
‪canBuildCyclicDependenciesOfSingletonsWithSetter()
Definition: ContainerTest.php:292
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnTwoOptionalGivesOneArgumentToConstructorIfFirstIsObjectAndSecondIsNull
‪getInstanceOnTwoOptionalGivesOneArgumentToConstructorIfFirstIsObjectAndSecondIsNull()
Definition: ContainerTest.php:931
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceDoesNotInjectAnOptionalArgumentIfGivenArgumentIsNull
‪getInstanceDoesNotInjectAnOptionalArgumentIfGivenArgumentIsNull()
Definition: ContainerTest.php:468
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\Fixtures\TwoConstructorArgumentsSecondOptional
Definition: ContainerConstructorInjectionTestFixtures.php:80
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\$subject
‪Container $subject
Definition: ContainerTest.php:53
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstancePassesGivenParameterToTheNewObject
‪getInstancePassesGivenParameterToTheNewObject()
Definition: ContainerTest.php:174
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceReturnsInstanceOfAClassWithConstructorInjectionAndDefaultConstructorParameters
‪getInstanceReturnsInstanceOfAClassWithConstructorInjectionAndDefaultConstructorParameters()
Definition: ContainerTest.php:163
‪TYPO3\CMS\Core\Cache\Frontend\NullFrontend
Definition: NullFrontend.php:29
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceGivesTwoArgumentsToClassConstructorIfSecondIsOptional
‪getInstanceGivesTwoArgumentsToClassConstructorIfSecondIsOptional()
Definition: ContainerTest.php:618
‪TYPO3\CMS\Extbase\Object\Exception\CannotBuildObjectException
Definition: CannotBuildObjectException.php:27
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnFirstOptionalAndSecondMandatoryInjectsSecondArgumentIfFirstIsGiven
‪getInstanceOnFirstOptionalAndSecondMandatoryInjectsSecondArgumentIfFirstIsGiven()
Definition: ContainerTest.php:776
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceDoesNotInjectAnOptionalArgumentIfNotGiven
‪getInstanceDoesNotInjectAnOptionalArgumentIfNotGiven()
Definition: ContainerTest.php:452
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceInitializesObjects
‪getInstanceInitializesObjects()
Definition: ContainerTest.php:235
‪TYPO3\CMS\Extbase\Reflection\ReflectionService
Definition: ReflectionService.php:28
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\singletonWhichRequiresPrototypeViaSetterInjectionWorksAndAddsDebugMessage
‪singletonWhichRequiresPrototypeViaSetterInjectionWorksAndAddsDebugMessage()
Definition: ContainerTest.php:302
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceGivesFirstArgumentToConstructorIfSecondIsOptionalFirstIsGivenAndSecondIsGivenNull
‪getInstanceGivesFirstArgumentToConstructorIfSecondIsOptionalFirstIsGivenAndSecondIsGivenNull()
Definition: ContainerTest.php:707
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceThrowsExceptionIfPrototypeObjectsWiredViaSetterInjectionContainCyclicDependencies
‪getInstanceThrowsExceptionIfPrototypeObjectsWiredViaSetterInjectionContainCyclicDependencies()
Definition: ContainerTest.php:215
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnTwoOptionalGivesTwoGivenArgumentsToConstructor
‪getInstanceOnTwoOptionalGivesTwoGivenArgumentsToConstructor()
Definition: ContainerTest.php:848
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceThrowsExceptionIfPrototypeObjectsWiredViaConstructorInjectionContainCyclicDependencies
‪getInstanceThrowsExceptionIfPrototypeObjectsWiredViaConstructorInjectionContainCyclicDependencies()
Definition: ContainerTest.php:205
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceReturnsInstanceOfAClassWithMixedSimpleTypeAndConstructorInjectionWithNullDefaultValue
‪getInstanceReturnsInstanceOfAClassWithMixedSimpleTypeAndConstructorInjectionWithNullDefaultValue()
Definition: ContainerTest.php:143
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceReturnsInstanceOfAClassWithMixedSimpleTypeAndConstructorInjection
‪getInstanceReturnsInstanceOfAClassWithMixedSimpleTypeAndConstructorInjection()
Definition: ContainerTest.php:133
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\Fixtures\NamespacedClass
Definition: NamespacedClass.php:23
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnFirstOptionalAndSecondMandatoryInjectsSecondArgumentIfFirstIsGivenAsNullAndSecondIsNull
‪getInstanceOnFirstOptionalAndSecondMandatoryInjectsSecondArgumentIfFirstIsGivenAsNullAndSecondIsNull()
Definition: ContainerTest.php:828
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\Fixtures\MandatoryConstructorArgumentTwo
Definition: ContainerConstructorInjectionTestFixtures.php:64
‪TYPO3\CMS\Extbase\Reflection\Exception\UnknownClassException
Definition: UnknownClassException.php:25
‪TYPO3\CMS\Extbase\Object\Exception
Definition: CannotBuildObjectException.php:18
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceInjectsFirstMandatoryArgumentIfSecondIsOptionalAndNoneAreGiven
‪getInstanceInjectsFirstMandatoryArgumentIfSecondIsOptionalAndNoneAreGiven()
Definition: ContainerTest.php:644
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getEmptyObjectReturnsInstanceOfClassImplementingSerializable
‪getEmptyObjectReturnsInstanceOfClassImplementingSerializable()
Definition: ContainerTest.php:253
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\Fixtures\SimpleTypeConstructorArgument
Definition: ContainerConstructorInjectionTestFixtures.php:21
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\singletonWhichRequiresPrototypeViaConstructorInjectionWorksAndAddsDebugMessage
‪singletonWhichRequiresPrototypeViaConstructorInjectionWorksAndAddsDebugMessage()
Definition: ContainerTest.php:344
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceReturnsSameInstanceInstanceIfObjectIsSingleton
‪getInstanceReturnsSameInstanceInstanceIfObjectIsSingleton()
Definition: ContainerTest.php:195
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\setUp
‪setUp()
Definition: ContainerTest.php:57
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getEmptyObjectReturnsInstanceOfSimpleClass
‪getEmptyObjectReturnsInstanceOfSimpleClass()
Definition: ContainerTest.php:244
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: ContainerTest.php:48
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest
Definition: ContainerTest.php:45
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceReturnsInstanceOfSimpleNamespacedClass
‪getInstanceReturnsInstanceOfSimpleNamespacedClass()
Definition: ContainerTest.php:104
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\Fixtures\ArgumentTestClass
Definition: ContainerConstructorInjectionTestFixtures.php:33
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceInjectsFirstMandatoryArgumentIfSecondIsOptionalAndBothAreGivenAsNull
‪getInstanceInjectsFirstMandatoryArgumentIfSecondIsOptionalAndBothAreGivenAsNull()
Definition: ContainerTest.php:664
‪TYPO3\CMS\Extbase\Object\Exception
Definition: Exception.php:27
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\Fixtures\OptionalConstructorArgument
Definition: ContainerConstructorInjectionTestFixtures.php:51
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\Fixtures\TwoConstructorArgumentsFirstOptional
Definition: ContainerConstructorInjectionTestFixtures.php:96
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\prototypeWhichRequiresSingletonViaConstructorInjectionWorks
‪prototypeWhichRequiresSingletonViaConstructorInjectionWorks()
Definition: ContainerTest.php:375
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceGivesSimpleConstructorArgumentToClassInstance
‪getInstanceGivesSimpleConstructorArgumentToClassInstance()
Definition: ContainerTest.php:390
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\prototypeWhichRequiresSingletonViaSetterInjectionWorks
‪prototypeWhichRequiresSingletonViaSetterInjectionWorks()
Definition: ContainerTest.php:334
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceGivesExistingConstructorArgumentToClassInstanceIfArgumentIsGiven
‪getInstanceGivesExistingConstructorArgumentToClassInstanceIfArgumentIsGiven()
Definition: ContainerTest.php:485
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getEmptyObjectInitializesObjects
‪getEmptyObjectInitializesObjects()
Definition: ContainerTest.php:262
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceGivesFirstArgumentToConstructorIfSecondIsOptionalAndFirstIsGiven
‪getInstanceGivesFirstArgumentToConstructorIfSecondIsOptionalAndFirstIsGiven()
Definition: ContainerTest.php:685
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnFirstOptionalAndSecondMandatoryGivesTwoGivenArgumentsToConstructor
‪getInstanceOnFirstOptionalAndSecondMandatoryGivesTwoGivenArgumentsToConstructor()
Definition: ContainerTest.php:750
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\canInjectInterfaceInClass
‪canInjectInterfaceInClass()
Definition: ContainerTest.php:280
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\Fixtures\TwoConstructorArgumentsBothOptional
Definition: ContainerConstructorInjectionTestFixtures.php:120
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceReturnsInstanceOfSimpleClass
‪getInstanceReturnsInstanceOfSimpleClass()
Definition: ContainerTest.php:95
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\singletonWhichRequiresSingletonViaSetterInjectionWorks
‪singletonWhichRequiresSingletonViaSetterInjectionWorks()
Definition: ContainerTest.php:314
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceReturnsInstanceOfAClassWithConstructorInjection
‪getInstanceReturnsInstanceOfAClassWithConstructorInjection()
Definition: ContainerTest.php:113
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceOnTwoOptionalGivesOneArgumentToConstructorIfFirstIsObjectAndSecondIsNotGiven
‪getInstanceOnTwoOptionalGivesOneArgumentToConstructorIfFirstIsObjectAndSecondIsNotGiven()
Definition: ContainerTest.php:909
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceInjectsNewInstanceOfClassToClassIfArgumentIsMandatory
‪getInstanceInjectsNewInstanceOfClassToClassIfArgumentIsMandatory()
Definition: ContainerTest.php:433
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceReturnsInstanceOfAClassWithTwoLevelDependency
‪getInstanceReturnsInstanceOfAClassWithTwoLevelDependency()
Definition: ContainerTest.php:123
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceGivesTwoArgumentsToClassConstructor
‪getInstanceGivesTwoArgumentsToClassConstructor()
Definition: ContainerTest.php:503
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\getInstanceInjectsFirstMandatoryArgumentIfSecondIsGiven
‪getInstanceInjectsFirstMandatoryArgumentIfSecondIsGiven()
Definition: ContainerTest.php:585
‪TYPO3\CMS\Extbase\Tests\Unit\Object\Container\ContainerTest\prototypeWhichRequiresPrototypeViaSetterInjectionWorks
‪prototypeWhichRequiresPrototypeViaSetterInjectionWorks()
Definition: ContainerTest.php:324