|
7 | 7 | use Technically\DependencyResolver\Specs\Fixtures\MyAbstractClass; |
8 | 8 | use Technically\DependencyResolver\Specs\Fixtures\MyConcreteContainerService; |
9 | 9 | use Technically\DependencyResolver\Specs\Fixtures\MyAbstractContainerService; |
| 10 | +use Technically\DependencyResolver\Specs\Fixtures\MyNullableArgumentService; |
| 11 | +use Technically\DependencyResolver\Specs\Fixtures\MyOptionalArgumentService; |
10 | 12 |
|
11 | 13 | describe('DependencyResolver', function() { |
12 | 14 | it('should instantiate', function () { |
|
49 | 51 | assert($resolved->container !== $container); |
50 | 52 | }); |
51 | 53 |
|
| 54 | + it('should instantiate a class falling back to default values, if possible', function () { |
| 55 | + $container = new ArrayContainer(); |
| 56 | + $resolver = new DependencyResolver($container); |
| 57 | + |
| 58 | + $resolved = $resolver->resolve(MyOptionalArgumentService::class); |
| 59 | + |
| 60 | + assert($resolved instanceof MyOptionalArgumentService); |
| 61 | + assert($resolved->name === 'MyOptionalArgumentService'); |
| 62 | + }); |
| 63 | + |
| 64 | + it('should instantiate a class falling back to null when there is no other choice', function () { |
| 65 | + $container = new ArrayContainer(); |
| 66 | + $resolver = new DependencyResolver($container); |
| 67 | + |
| 68 | + $resolved = $resolver->resolve(MyNullableArgumentService::class); |
| 69 | + |
| 70 | + assert($resolved instanceof MyNullableArgumentService); |
| 71 | + assert($resolved->container === null); |
| 72 | + }); |
| 73 | + |
52 | 74 | it('should throw exception if class being resolved is abstract', function () { |
53 | 75 | $container = new ArrayContainer(); |
54 | 76 | $resolver = new DependencyResolver($container); |
|
0 commit comments