PHPUnit 10 permet de spécifier différents paramètres de méthode lors de l'appel consécutif de la même méthode
P粉639667504
P粉639667504 2024-04-05 10:38:10
0
1
1467

J'ai une méthode qui est appelée plusieurs fois avec différents paramètres dans le cadre d'une méthode plus large.

$query->where("one", $id);
$query->where("two", "LIKE %{$name}%");
$query->where("three", false);
$query->where("four", true);

J'utilise PHPUnit 10 et je souhaite écrire un test unitaire pour cette méthode spécifique. Je veux vérifier si la méthode where est appelée 4 fois avec certains paramètres spécifiques.

Par exemple :

$mockedQuery->expects($this->exactly(4))
->method("where")
->with(
// Here I'd like to specify the list of arguments
// or perhaps a map or something
)
->willReturn($mockedQuery);

Le ->will ci-dessus ne fonctionne pas pour spécifier différents paramètres pour des appels successifs à la même méthode (ou du moins je n'ai pas pu le faire fonctionner).

J'ai essayé d'utiliser la documentation mais je ne sais pas exactement quoi rechercher, donc c'est difficile à trouver.

P粉639667504
P粉639667504

répondre à tous(1)
P粉798343415

Je vais répondre à ma propre question car j'ai dû creuser un peu.

Pour PHPUnit 10, la méthode withConsecutive (c'est ce que je recherche, je ne savais tout simplement pas qu'elle s'appelait ainsi) a été supprimée. Aucun remplacement officiel n'existe.

Ce problème a été posé sur le référentiel PHPUnit

La solution que j'ai utilisée est

$matcher = $this->exactly(2);
$this->mock
    ->expects($matcher)
    ->method('get')
    ->willReturnCallback(function (string $param) use ($matcher) {
                match ($matcher->numberOfInvocations()) {
                    1 => $this->assertEquals($param, 'someValue'),
                    2 => $this->assertEquals($param, 'someOtherValue'),
                };
            })
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!