Jak mohu zaručit, že žádost se stalo správně, když se vysmívá API?

0

Otázka

Řekněme, že jsem testování funkce, která volá webové služby, a to služby je terčem posměchu s httptest.NewServer

func TestSomeFeature(t *testing.T) {
    server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.WriteHeader(200)
    }))

    SomeFeature(server.URL, "foo")
}

func SomeFeature(host, a string) {
    if a == "foo" {
        http.Get(fmt.Sprintf("%v/foo", host))
    }
    if a == "bar" {
        http.Get(fmt.Sprintf("%v/bar", host))
    }
}

Jak mohu tvrdit, že server byl nazýván se správnou url /foo a nepodaří test, pokud to bylo voláno s nesprávnou adresu url nebo není volána vůbec?

go testing
2021-11-23 21:15:23
1

Nejlepší odpověď

3

Můžete to udělat to takhle:

func TestSomeFeature(t *testing.T) {
    called := false
    server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // assert that strings.Contains(r.RequestURI, "/foo") is true
        called = true
        w.WriteHeader(200)
    }))

    SomeFeature(server.URL, "foo")
    // assert that called is true
}
2021-11-23 21:19:38

Jsou tam žádné souběžnost problémy, pokud jsem běžet několik z těchto souběžně se stejným server?
Timo Huovinen

@TimoHuovinen samozřejmě výše uvedený kód je pro sekvenční testování, ale nespecifikoval jste souběžnosti ve své otázce
blackgreen

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................