diff --git a/README.md b/README.md index 06079ae..3509ac8 100644 --- a/README.md +++ b/README.md @@ -449,4 +449,18 @@ $mockFactory }) ->createMock(Date::class, ['a' => 1]); +``` +You can get the parameters sent to the constructor as soon as it is instanced. +```php + +$mockMethod = new MockMethod(); + + +$mockFactory = new MockFactory($mockMethod); +$mockFactory->onInstanceCreated(function (Date $dateInstance, string $date) { + //$dateInstance + //$date 2022-12-12 + +}); +$dateInstance = $mockFactory->createMock(Date::class, ['date' => '2022-12-12'], true); ``` \ No newline at end of file diff --git a/src/MockClassGenerator.php b/src/MockClassGenerator.php index ab661c2..91ed776 100644 --- a/src/MockClassGenerator.php +++ b/src/MockClassGenerator.php @@ -29,15 +29,18 @@ public function generate(string $mockClassName, string $class, bool $overrideCon if ($overrideConstruct) { $mockCode .= " public function __construct({$this->mockMethodInterface} \$mockFactory, array \$params = []) {\n"; $mockCode .= $defineMockFactory; + $mockCode.=" \$mockFactory->getMockMethod('object.on.created')(\$this,...\$params);\n"; } elseif ($reflection->hasMethod('__construct')) { $mockCode .= " public function __construct(\$mockFactory, array \$params = []) {\n"; $mockCode .= $defineMockFactory; $mockCode .= " parent::__construct(...\$params);\n"; + $mockCode.=" \$mockFactory->getMockMethod('object.on.created')(\$this,...\$params);\n"; } else { $mockCode .= " public function __construct(\$mockFactory) {\n"; $mockCode .= $defineMockFactory; + $mockCode.="\$mockFactory->getMockMethod('object.on.created')(\$this,\$params=[]);\n"; } - $mockCode.="\$mockFactory->getMockMethod('object.on.created')(\$this,\$params=[]);\n"; + $mockCode .= " }\n"; diff --git a/src/MockFactory.php b/src/MockFactory.php index 8205238..a9019b8 100644 --- a/src/MockFactory.php +++ b/src/MockFactory.php @@ -18,7 +18,7 @@ class MockFactory */ public function __construct(private MockMethodInterface $mockMethod = new MockMethod()) { - $this->mockMethod->mockMethod('object.on.created', fn() => null); + $this->mockMethod->mockMethod('object.on.created', fn(...$args) => null); } public static function from(MockMethod $mockMethod):self