ยังไงฉันรับประกันได้ว่าสิ่งที่ร้องขอมาต้องการเกิดขึ้นอย่างถูกต้องตอนที่ล้อเลียนรูปแบบ 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 และทำให้การทดสอบผิดพลาถ้ามันถูกเรียกว่าผิดที่อยู่ url หรือไม่โทรหรอ?

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

ไม่มี concurrency ปัญหาถ้าฉันวิ่งหลายของพวกนี้อยู่ควบคู่กับเดียวกัน server?
Timo Huovinen

@TimoHuovinen แน่นอนที่อยู่เหนือรหัสเป็นเพื่อนต่อเนื่องการทดสอบ,คุณไม่ได้กำหนด concurrency อยู่ในคำถามของคุณ
blackgreen

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่