Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können Sie Konstanten in Go for Testing neu definieren?

Wie können Sie Konstanten in Go for Testing neu definieren?

DDD
DDDOriginal
2024-11-02 11:49:02736Durchsuche

How Can You Redefine Constants in Go for Testing?

Konstanten für Tests in Go neu definieren

Im Produktionscode ist es oft wünschenswert, Konstanten für stabile Werte wie Basis-URLs zu verwenden. Dies kann jedoch beim Testen zu Herausforderungen führen, da die Standardimplementierung von const in Go keine Neuzuweisung zulässt.

Problem:

Bedenken Sie den folgenden Codeausschnitt, der versucht, die baseUrl-Konstante in neu zu definieren die Testdatei:

<code class="go">package main

const baseUrl = "http://google.com"

// in main_test.go
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  ...
 }
const baseUrl = ts.URL // throws error: const baseUrl already defined</code>

Dieser Code schlägt mit dem Fehler „const baseUrl bereits definiert“ fehl, da Go keine Neudefinition von Konstanten zulässt.

Lösung:

Zur Aktivierung Wenn Sie testfreundliche Konstanten verwenden, sollten Sie über eine Umgestaltung Ihres Codes nachdenken. Anstatt eine globale Konstante zu verwenden, erstellen Sie eine Funktion, die den konstanten Wert als Parameter verwendet:

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

func MyFunc(baseUrl string) {
    // Use baseUrl
}</code>

In der Testdatei können Sie den Parameter „baseUrl“ neu definieren, ohne dass sich dies auf den Produktionscode auswirkt:

<code class="go">// in main_test.go
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  ...
 }
myFuncImpl(ts.URL) // Call the function with the test URL</code>

Dieser Ansatz ermöglicht es Ihnen, Ihren Code mit verschiedenen Werten der Konstante zu testen und gleichzeitig die ursprüngliche Implementierung beizubehalten. Die ursprüngliche Funktion MyFunc() verwendet weiterhin den produktionskonstanten Wert und gewährleistet so Stabilität für Nicht-Testszenarien.

Das obige ist der detaillierte Inhalt vonWie können Sie Konstanten in Go for Testing neu definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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