grpct

package
v1.64.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2026 License: MIT Imports: 6 Imported by: 0

README

Package grpct

Пакет grpct предназначен для упрощения написания юнит- и интеграционных тестов gRPC-сервисов на базе isp-kit.

Types

MockServer

Структура MockServer представляет собой обёртку над gRPC-сервером, позволяющую удобно мокать отдельные endpoint'ы.

Methods:

NewMock(t *test.Test) (*MockServer, *client.Client)

Создаёт MockServer и соответствующий gRPC-клиент. Полезно для юнит-тестов и простых сценариев мокирования.

(m *MockServer) Mock(endpoint string, handler any) *MockServer

Регистрирует указанный handler на переданный endpoint с использованием endpoint.Wrapper.

Functions

TestServer(t *test.Test, service isp.BackendServiceServer) (*grpc.Server, *client.Client)

Создаёт полноценный grpc.Server с переданным BackendServiceServer и возвращает его вместе с клиентом. Подходит для end-to-end тестов.

Автоматически управляет закрытием ресурсов (Shutdown сервера и Close клиента) по окончании теста.

Usage

Create mock gRPC server and mock handler
package mypkg_test

import (
	"testing"

	"github.com/txix-open/isp-kit/grpct"
	"github.com/txix-open/isp-kit/test"
)

func TestExample(t *testing.T) {
	testCtx := test.New(t)
	mockSrv, cli := grpct.NewMock(testCtx)
	mockSrv.Mock("/example.Service/Method", handlerFn)

	resp, err := cli.Invoke(testCtx.Context(), "/example.Service/Method", req, &reply)
	testCtx.Assert().NoError(err)
	testCtx.Assert().Equal(expected, reply)
}
Create test gRPC server from implementation
import (
	"testing"

	"github.com/txix-open/isp-kit/grpct"
	"github.com/txix-open/isp-kit/test"
)

func TestRealService(t *testing.T) {
	testCtx := test.New(t)
	srv, cli := grpct.TestServer(testCtx, myServiceImpl)

	resp, err := cli.Invoke(testCtx.Context(), "/my.Service/Endpoint", req, &reply)
	testCtx.Assert().NoError(err)
	testCtx.Assert().Equal(expected, reply)

	_ = srv // используется для дополнительных проверок, если необходимо
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func TestServer

func TestServer(t *test.Test, service isp.BackendServiceServer) (*grpc.Server, *client.Client)

Types

type MockServer

type MockServer struct {
	Wrapper endpoint.Wrapper
	// contains filtered or unexported fields
}

func NewMock

func NewMock(t *test.Test) (*MockServer, *client.Client)

func (*MockServer) Mock

func (m *MockServer) Mock(endpoint string, handler any) *MockServer

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL