grpct

package
v1.67.2 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 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

Overview

Package grpct provides test helpers for gRPC server and client operations. It creates mock gRPC servers on random local ports for testing.

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)

TestServer creates and starts a gRPC server with the provided service, returning both the server and a configured client. The server listens on a random local port and is automatically shut down when the test completes.

Types

type MockServer

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

MockServer provides a mock gRPC server for testing. It allows registering handlers for specific endpoints.

func NewMock

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

NewMock creates a new mock gRPC server and client pair. The server listens on a random local port and is automatically shut down when the test completes.

func (*MockServer) Mock

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

Mock registers a handler for the specified endpoint. Returns the MockServer for method chaining.

Jump to

Keyboard shortcuts

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