1 | <?php |
||
12 | abstract class Test extends TestCase |
||
13 | { |
||
14 | use Toolkit; |
||
15 | |||
16 | public $params = []; |
||
17 | public $disableRemote = true; |
||
18 | |||
19 | public $mocks = []; |
||
20 | public $data = []; |
||
21 | |||
22 | 3 | public function __construct() |
|
23 | { |
||
24 | parent::__construct(); |
||
25 | |||
26 | $this->app = new Test\Application($this); |
||
27 | |||
28 | foreach ($this->mocks as [$method, $params, $result]) { |
||
29 | $this->mock($method, $params)->willReturn($result); |
||
30 | } |
||
31 | |||
32 | $serviceData = []; |
||
33 | foreach ($this->data as $space => $data) { |
||
34 | [$service, $space] = explode('.', $space); |
||
35 | if (!array_key_exists($service, $serviceData)) { |
||
36 | $serviceData[$service] = []; |
||
37 | } |
||
38 | $serviceData[$service][$space] = $data; |
||
39 | } |
||
40 | |||
41 | $pool = $this->app->get(Pool::class); |
||
42 | $property = new ReflectionProperty(Pool::class, 'resolvers'); |
||
43 | $property->setAccessible(true); |
||
44 | $property->setValue($pool, []); |
||
45 | |||
46 | $service = $this->app->get(Service::class)->getName(); |
||
47 | $pool->register($service, function() { |
||
48 | return $this->app->get(Mapper::class); |
||
49 | }); |
||
50 | |||
51 | 3 | $pool->registerResolver(function($service) use ($serviceData) { |
|
52 | 3 | if (array_key_exists($service, $serviceData)) { |
|
53 | 2 | return new Test\Mapper($this, $service); |
|
54 | } |
||
55 | 2 | }); |
|
56 | } |
||
57 | |||
58 | 45 | public function setup() |
|
62 | |||
63 | 45 | public function tearDown() |
|
67 | |||
68 | public $mockInstances = []; |
||
69 | |||
70 | 5 | public function mock(string $job, array $params = []) |
|
82 | } |
||
83 |
This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.