前兩篇我們已經完成了gin+gorm部分,今天我們來補充go-Redis,並進行測試。
整合go-Redis
我們把Redis相關也放在model下面,使用的是常見的go-redis:
// redis.go
package model
import (
"fmt"
"github.com/spf13/viper"
"github.com/go-redis/redis"
)
var RedisClient *redis.Client
func RedisInit() {
RedisClient = redis.NewClient(&redis.Options{
Addr: fmt.Sprintf("%s:%s", viper.GetString("redis.host"), viper.GetString("redis.port")),
Password: viper.GetString("redis.auth"),
DB: 0,
})
_, err := RedisClient.Ping().Result()
if err != nil {
panic("redis ping error")
}
}
然後在連線Mysql的前面加入初始化redis連線的操作即可。
// redis 初始化
model.RedisInit()
你可以做一些簡單操作,或者在redis.go做一些常用方法的封裝,比較簡單,就不贅述了,更多go-redis操作可見:
測試
新建測試目錄test,建立三個檔案:
// index.go
package test
import (
"net/http"
"io/ioutil"
)
func Sum(a int, b int) int {
return a+b
}
func HttpIndex() []byte {
resp, err := http.Get("http://127.0.0.1:8080/")
if err != nil && resp.StatusCode != 200 {
panic(err)
}
//關閉連線
defer resp.Body.Close()
//讀取報文中所有內容
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
//輸出內容
return body
}
// index_test.go
package test
import (
"testing"
"encoding/json"
"local.com/sai0556/gin-frame/controller"
)
func TestSum(t *testing.T) {
ret := Sum(2, 7)
if ret != 9 {
t.Error("Expected 9 ~wow~")
}
}
func TestHttpIndex(t *testing.T) {
data := HttpIndex()
target := controller.Response{}
// json轉換
if err := json.Unmarshal(data, &target); err != nil {
t.Error(target)
}
ret := controller.Response{0, "success", nil}
if target != ret {
t.Error("json error")
}
}
// index_bench_test.go
package test
import (
"testing"
)
func BenchmarkSum(b *testing.B) {
for i := 0; i < b.N; i++ {
Sum(2, 7)
}
}
func BenchmarkHttpIndex(b *testing.B) {
for i := 0; i < b.N; i++ {
HttpIndex()
}
}
私以為go的測試相比其他語言還是比較簡潔的,這裡需要注意幾點:
- 測試檔案以_test結尾
- 基礎測試方法名要以TEST開頭
執行起來,看一下:
對圖中做一些說明:
// -run="none"不執行基礎單元測試,bench指定基準測試方法
go test -v -run="none" -bench="Bench*"
// 最後一個BenchmarkHttpIndex-4後面測試結果表示
一共執行了11010次,每次執行耗時107392ns(~0.107ms)
結後語
文章很基礎,主要是介紹了結合了gin+gorm+go-redis,並寫了簡單的測試,是相對基礎的文章,但足以應付一些api介面了。希望對你有幫助,有問題可留言或私信。
本作品採用《CC 協議》,轉載必須註明作者和本文連結
收藏前不妨點個贊試試!!!
分享開發知識,歡迎交流。qq957042781,公眾號:愛好歷史的程式設計師。
點選直達個人部落格