Codeception / Codeception/module-mezzio

Set recreateApplicationBetweenRequests to true by default

Aperta
#4 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
PHP
Stelle
1
Fork
4
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hi, commit https://github.com/Codeception/module-zendexpressive/commit/7d405fd406bd55e1eea671ddf4faa449b3be8229 introduced the flags to recreate the application instance between tests and between requests, both set to false by default.

Commit https://github.com/Codeception/module-zendexpressive/commit/8233e766f39effd52a9d8abbe18b06bc58b759fa changed the default of `recreateApplicationBetweenTests` to true, which is sane to me, but without any reason described.

In my humble opinion also `recreateApplicationBetweenRequests` should be set to true by default, because any stateful service or component with non-deterministic behavior related to the request fails to be reset on subsequent requests.

A trivial example may be the initialization of an Identity helper:

```php
class IdentityHelperMiddleware implements MiddlewareInterface
{
private IdentityHelper $identityHelper;

public function __construct(IdentityHelper $identityHelper)
{
$this->identityHelper = $identityHelper;
}

public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$username = $request->getAttribute('username');
if (null !== $username) {
$this->identityHelper->setIdentity($username);
}

return $handler->handle($request);
}
}
```
In this code snipped `IdentityHelper` is a service instantiated only once per test with `recreateApplicationBetweenRequests = false`, so an hypothetical second request in the same test without the username attribute wouldn't clear the previously registered identity, while a real scenario would instead end with an empty identity for the second request.

Is this a user fault? Maybe, but PHP is shared-nothing by default, and almost every developer takes it for granted.

I don't experience any visible performance degradation switching the flag.

@Naktibalda is there any reason `recreateApplicationBetweenRequests` was set to false by default?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.