Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Expected::exactly should have ability to change callback method per times called

Offen
#30 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
php
Bereich
testing

Rechercherichtung

Beginne damit, die Implementierung von Expected::exactly im Repository Codeception Stub zu finden, und prüfe, wie Callback-Aufrufe derzeit behandelt werden. Verwende das Zwei-Callback-Beispiel des Issues als Akzeptanzfall: Aufeinanderfolgende Aufrufe sollten unterschiedliche Antworten erhalten, und ein Callback sollte vor der Rückgabe Assertions ausführen können.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

What are you trying to achieve?

Http client send method is called 2 times on a test
I would like to make different response objects for each of them
on one of them I would also like to have asserts

What do you get instead?

RN it is impossible to have different callbacks for consecutive calls

Provide console output if related. Use -vvv mode for more details.

Provide test source code if related

$oauth2Provider->setHttpClient($this->construct(Client::class, [], [
    'send' => Expected::exactly(2,
        function (RequestInterface $request) {
            return new Response(200, [
                'content-type' => 'application/json'
            ], '{"access_token": "access", "expires_in": 3600, "refresh_token": "refresh"}');
        },
        function (RequestInterface $request) {
            //assertions go here

            return new Response(200, [
            ], 'response body goes here');
        }
    ]))
]));
Details
  • Codeception version:
  • PHP Version: 7.4.6
  • Operating System: Ubuntu
  • Installation type: Composer
  • List of installed packages (composer show)
  • Suite configuration:
# paste suite config here

Addittional info
RN I do this

$oauth2Provider->setHttpClient($this->construct(Client::class, [], [
    'send' => Expected::exactly(2, Closure::fromCallable(new MultiCallable([
        function (RequestInterface $request) {
            return new Response(200, [
                'content-type' => 'application/json'
            ], '{"access_token": "access", "expires_in": 3600, "refresh_token": "refresh"}');
        },
        function (RequestInterface $request) {
            //asserts go here

            return new Response(200, [
            ], 'response body goes here');
        }
    ])))
]));
<?php

class MultiCallable
{
    private $methods;

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

    public function __invoke(...$args)
    {
        $method = array_shift($this->methods);

        return call_user_func_array($method, $args);
    }
}
Vorherrschende Sprache
PHP
Sterne
301
Forks
19
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Codeception/Stub

Alle Issues in Codeception/Stub

Ähnliche Issues

Weitere Issues zu PHP

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.