반응형
Redis를 사용하는 함수를 테스트하기 위해서는 테스트 환경에서 실제 Redis 인스턴스 대신 테스트용 Redis 인스턴스(예: miniredis 라이브러리를 사용한 가상의 Redis 서버)에 연결하여 테스트를 진행할 수 있습니다. 이 방법은 외부 Redis 서버에 의존하지 않으므로, 테스트를 더 빠르고 신뢰성 있게 만듭니다.
아래는 miniredis를 사용하여 Redis를 사용하는 간단한 함수를 테스트하는 Go 코드 예시입니다. 이 예제에서는 SetKey라는 함수가 Redis에 키와 값을 저장하는 기능을 수행한다고 가정합니다.
먼저, miniredis를 설치해야 합니다:
go get github.com/alicebob/miniredis/v2
테스트 코드 예시:
package main
import (
"github.com/alicebob/miniredis/v2"
"github.com/go-redis/redis/v8"
"context"
"testing"
)
// Redis 클라이언트를 초기화하는 함수
func newRedisClient(addr string) *redis.Client {
return redis.NewClient(&redis.Options{
Addr: addr,
})
}
// Redis에 키와 값을 저장하는 함수
func SetKey(client *redis.Client, key string, value string) error {
ctx := context.Background()
err := client.Set(ctx, key, value, 0).Err()
return err
}
// SetKey 함수를 테스트하는 테스트 케이스
func TestSetKey(t *testing.T) {
// miniredis 서버 시작
s, err := miniredis.Run()
if err != nil {
t.Fatalf("miniredis 실행 실패: %s", err)
}
defer s.Close()
// miniredis 주소를 사용하여 Redis 클라이언트 초기화
client := newRedisClient(s.Addr())
// 테스트 실행
key := "testKey"
value := "hello"
err = SetKey(client, key, value)
if err != nil {
t.Errorf("SetKey 실패: %s", err)
}
// Redis에서 값 검증
got, err := client.Get(context.Background(), key).Result()
if err != nil {
t.Errorf("키 가져오기 실패: %s", err)
}
if got != value {
t.Errorf("값이 일치하지 않습니다. got %s; want %s", got, value)
}
}
이 코드는 miniredis를 사용하여 가상의 Redis 서버를 실행하고, SetKey 함수를 테스트합니다. 테스트는 SetKey 함수가 Redis에 값을 올바르게 저장하는지 확인하기 위해 Redis 클라이언트를 사용하여 저장된 값을 검색합니다.
반응형
'Development' 카테고리의 다른 글
localhost랑 127.0.0.1이랑 똑같은거 아니야? (0) | 2024.03.29 |
---|---|
postgresql sqlalchemy insert argument 32767개 사이즈 에러 (1) | 2024.03.28 |
Golang. go 환경 asdf로 관리하기 (0) | 2024.03.11 |
windows 환경에서 zappa 설치 에러 해결법(UnicodeDecodeError) (0) | 2020.09.02 |