오도원입니다.

건강과 행복을 위하여

Development

Golang. miniredis를 사용하여 redis 테스트하기

오도원공육사 2024. 3. 12. 17:27
반응형

 

 

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 클라이언트를 사용하여 저장된 값을 검색합니다.

반응형