第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 包函數(shù)中的模擬函數(shù)

Go 包函數(shù)中的模擬函數(shù)

Go
呼如林 2023-07-17 17:56:23
我正在嘗試模擬在我的 Go 代碼中的 API 函數(shù)調(diào)用中使用的 HTTP 客戶端。import (    "internal.repo/[...]/http"    "encoding/json"    "strings"    "github.com/stretchr/testify/require")func CreateResource(t *testing.T, url string, bodyReq interface{}, username string, password string, resource string) []byte {    bodyReqJSON, err := json.Marshal(bodyReq)    if err != nil {        panic(err)    }    headers := make(map[string]string)    headers["Content-Type"] = "application/json"    logger.Logf(t, "*************************** CREATE a temporary test %s ***************************", resource)    // this func below should be mocked    statusCode, body := http.POST(t, url, bodyReqJSON, headers, username, password)    require.Equal(t, statusCode, 201, "******ERROR!! A problem occurred while creating %s. Body: %s******", resource, strings.TrimSpace(string(body)))    return body}我想模擬我的http.POST函數(shù),它是內(nèi)部 HTTP 包的一部分,這樣我就不需要實(shí)際進(jìn)行在線調(diào)用,并隔離離線測試。是否有另一種方法可以依賴注入實(shí)現(xiàn)假設(shè) HTTP 接口的模擬結(jié)構(gòu)?你會怎么做這樣的事情?
查看完整描述

1 回答

?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個贊

這是解決方案


import (

? ? "net/http"

? ? "net/http/httptest"

? ? "testing"


? ? "github.com/stretchr/testify/assert"

)


func TestCreateResource(t *testing.T) {

? ? t.Run("successful", func(t *testing.T) {

? ? ? ? server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

? ? ? ? ? ? w.WriteHeader(201)

? ? ? ? }))

? ? ? ? defer server.Close()


? ? ? ? o := CreateResource(t, server.URL, nil, "admin", "password", "resource")

? ? ? ? assert.Equal(t, []byte{}, o)

? ? })

}


查看完整回答
反對 回復(fù) 2023-07-17
  • 1 回答
  • 0 關(guān)注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號