Skip to content

Commit 31492f6

Browse files
you can read the parameters sent to the constructor as soon as it is instanced.
1 parent e4a2264 commit 31492f6

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,4 +449,18 @@ $mockFactory
449449
})
450450
->createMock(Date::class, ['a' => 1]);
451451

452+
```
453+
You can get the parameters sent to the constructor as soon as it is instanced.
454+
```php
455+
456+
$mockMethod = new MockMethod();
457+
458+
459+
$mockFactory = new MockFactory($mockMethod);
460+
$mockFactory->onInstanceCreated(function (Date $dateInstance, string $date) {
461+
//$dateInstance
462+
//$date 2022-12-12
463+
464+
});
465+
$dateInstance = $mockFactory->createMock(Date::class, ['date' => '2022-12-12'], true);
452466
```

src/MockClassGenerator.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,18 @@ public function generate(string $mockClassName, string $class, bool $overrideCon
2929
if ($overrideConstruct) {
3030
$mockCode .= " public function __construct({$this->mockMethodInterface} \$mockFactory, array \$params = []) {\n";
3131
$mockCode .= $defineMockFactory;
32+
$mockCode.=" \$mockFactory->getMockMethod('object.on.created')(\$this,...\$params);\n";
3233
} elseif ($reflection->hasMethod('__construct')) {
3334
$mockCode .= " public function __construct(\$mockFactory, array \$params = []) {\n";
3435
$mockCode .= $defineMockFactory;
3536
$mockCode .= " parent::__construct(...\$params);\n";
37+
$mockCode.=" \$mockFactory->getMockMethod('object.on.created')(\$this,...\$params);\n";
3638
} else {
3739
$mockCode .= " public function __construct(\$mockFactory) {\n";
3840
$mockCode .= $defineMockFactory;
41+
$mockCode.="\$mockFactory->getMockMethod('object.on.created')(\$this,\$params=[]);\n";
3942
}
40-
$mockCode.="\$mockFactory->getMockMethod('object.on.created')(\$this,\$params=[]);\n";
43+
4144
$mockCode .= " }\n";
4245

4346

src/MockFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class MockFactory
1818
*/
1919
public function __construct(private MockMethodInterface $mockMethod = new MockMethod())
2020
{
21-
$this->mockMethod->mockMethod('object.on.created', fn() => null);
21+
$this->mockMethod->mockMethod('object.on.created', fn(...$args) => null);
2222
}
2323

2424
public static function from(MockMethod $mockMethod):self

0 commit comments

Comments
 (0)