Wie können wir von Konstanten abhängige Go-Funktionen testen?

Susan Sarandon
Freigeben: 2024-11-01 14:25:29
Original
149 Leute haben es durchsucht

How Can We Test Go Functions Dependent on Constants?

Konstanten in Go zum Testen neu definieren

Problembeschreibung:
In Go stellen Konstanten unveränderliche Werte bereit, die kann nach der Erklärung nicht mehr geändert werden. Beim Testen von Code, der auf diesen Konstanten basiert, wird es jedoch schwierig, zu Testzwecken unterschiedliche Werte einzufügen.

Vorgeschlagene Lösung:
Eine mögliche Lösung liegt in der Umgestaltung des einzuschließenden Codes eine zweite Funktion, die die Basis-URL als Parameter verwendet und die ursprüngliche Funktion mit dem konstanten Wert als Argument aufruft.

Implementierungsdetails:

  1. Führen Sie eine Hilfsfunktion ein:

    • Ersetzen Sie die Konstante baseUrl_ durch eine Funktion, die die Basis-URL als Argument akzeptiert:

      <code class="go">func myFuncImpl(baseUrl string) string {
        // Use `baseUrl` in the function
      }</code>
      Nach dem Login kopieren
  2. Ändern Sie die Originalfunktion:

    • Lassen Sie die Originalfunktion (MyFunc()) die Hilfsfunktion aufrufen:

      <code class="go">func MyFunc() string {
        return myFuncImpl(baseUrl_)
      }</code>
      Nach dem Login kopieren
  3. Behalten Sie die Konstante bei:

    • Behalten Sie die Konstante baseUrl_ als Referenzpunkt innerhalb von MyFunc( )-Funktion, die sicherstellt, dass der beabsichtigte konstante Wert im Produktionscode verwendet wird.

Vorteile:

  • Behält das Original bei API und vermeidet potenzielle Schwachstellen im Produktionscode.
  • Ermöglicht das Testen der MyFunc()-Funktion mit verschiedenen Werten, ohne die Konstante zu ändern.
  • Tests können auf eine dedizierte Funktion (myFuncImpl()) zugreifen ermöglicht eine flexible Wertzuweisung während Tests.

Beispiel:

<code class="go">const baseUrl_ = "http://google.com"

func MyFunc() string {
    return myFuncImpl(baseUrl_)
}</code>
Nach dem Login kopieren

Im Testcode kann myFuncImpl() direkt aufgerufen und benutzerdefinierten Werten zugewiesen werden baseUrl:

<code class="go">func TestMyFunc(t *testing.T) {
    result := myFuncImpl("http://example.org")
    // Assertions and tests
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie können wir von Konstanten abhängige Go-Funktionen testen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!