我怎么保证要求发生了正确的时候嘲笑一个API?

0

的问题

我是说我在测试一个功能,调用一个网络服务,这种服务是与嘲笑 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))
    }
}

我怎么断言,服务器被称为与权利url /foo 与失败的试验,如果它被称为用错误的网址或不叫?

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

最好的答案

3

你可以做像这样:

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

没有并发问题,如果我跑几个这样的平行相同的 server?
Timo Huovinen

@TimoHuovinen当然上述码顺序测试,你没有指定并发,在你的问题
blackgreen

其他语言

此页面有其他语言版本

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