This repository has been archived by the owner on Dec 4, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 33
Testing #49
Comments
Hello client, err := t38c.NewWithExecutor(myExecutorMock, true) Example using gomock: package mypkg
import (
"context"
"testing"
gomock "github.com/golang/mock/gomock"
"github.com/stretchr/testify/require"
"github.com/xjem/t38c"
)
func TestMock(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
e := NewMockExecutor(ctrl)
gomock.InOrder(
e.EXPECT().
Execute(gomock.Any(), "PING", []string{}).
Return([]byte(`{"ok": true, "ping":"pong"}`), nil),
e.EXPECT().
Execute(gomock.Any(), "SET", []string{"test", "1", "POINT", "1", "2"}).
Return([]byte(`{"ok": true}`), nil),
e.EXPECT().
Execute(gomock.Any(), "GET", []string{"test", "1", "POINT"}).
Return([]byte(`{"ok": true, "point": {"lat": 1, "lon": 2}}`), nil),
)
client, err := t38c.NewWithExecutor(e, true)
require.NoError(t, err)
err = client.Keys.Set("test", "1").Point(1, 2).Do(context.TODO())
require.NoError(t, err)
point, err := client.Keys.Get("test", "1").Point(context.TODO())
require.NoError(t, err)
require.Equal(t, &t38c.GetPointResponse{Point: t38c.Point{Lat: 1, Lon: 2}}, point)
} Mocking raw bytes is a bit painful, but it works :) |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
I use this for creating a point and mongodb. everything runs great. But now im testing and im unsure how to hit the keys.set.... part of the function. any pointers or examples would be fantastic
The text was updated successfully, but these errors were encountered: