Codeception / Codeception/module-laminas

Documentation how to mock controller plugin factory

Open
#28 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
PHP
Stars
1
Forks
7
PR merge metrics
No merged PRs in 30d

Description

Hello, i am trying to mock factory for controller plugin `FooPlugin`.

```
$this->getServiceLocator()->setAllowOverride( true );

$controllerPluginManager = $this->getServiceLocator()->get( 'ControllerPluginManager' );
$controllerPluginManager->setAllowOverride( true );
$controllerPluginManager->setFactory( FooPlugin::class, FooPluginTestFactory::class );
$controllerPluginManager->setAllowOverride( false );

$this->getModule( Laminas::class )->client->addServiceToContainer( 'ControllerPluginManager', $controllerPluginManager);

$this->getServiceLocator()->setAllowOverride( false );
```

i debugged internal code and see that Laminas overrides my factory `FooPluginTestFactory` to basic `FooPluginFactory`, which is provided in basic config. it occurred indside this https://github.com/Codeception/module-laminas/blob/00d6cf8ae6a10ef52b3569febf1d6277d7b3b8e1/src/Codeception/Lib/Connector/Laminas.php#L196-L205

after next line:
```
// Load modules
$serviceManager->get('ModuleManager')->loadModules();
```

do i make something wrong?
what is the suggested way to make it correctly?

thanks!

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with src/Codeception/Lib/Connector/Laminas.php around lines 196-205 and the service-manager setup shown in the issue. Trace what happens after ModuleManager->loadModules(), then document the supported way to mock a controller plugin factory and confirm that the guidance addresses the reported factory override.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
documentation, testing
Issue type
Documentation
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.